Exemple #1
0
        public static async Task <object> ParseAsync(IParseManager parseManager)
        {
            var type      = string.Empty;
            var elementId = string.Empty;
            var callback  = string.Empty;

            var attributes = new NameValueCollection();

            foreach (var name in parseManager.ContextInfo.Attributes.AllKeys)
            {
                var value = parseManager.ContextInfo.Attributes[name];

                if (StringUtils.EqualsIgnoreCase(name, Type))
                {
                    type = value;
                }
                else if (StringUtils.EqualsIgnoreCase(name, ElementId))
                {
                    elementId = value;
                }
                else if (StringUtils.EqualsIgnoreCase(name, Callback))
                {
                    callback = value;
                }
                else
                {
                    attributes[name] = value;
                }
            }

            return(await ParseAsync(parseManager, type, elementId, callback, attributes));
        }
Exemple #2
0
        private static async Task <string> ParseAsync(IParseManager parseManager, string file, Dictionary <string, string> parameters)
        {
            if (string.IsNullOrEmpty(file))
            {
                return(string.Empty);
            }
            var pageInfo = parseManager.PageInfo;

            var pageParameters = pageInfo.Parameters;

            pageInfo.Parameters = parameters;
            var pageIncludeFile = pageInfo.IncludeFile;

            pageInfo.IncludeFile = file;
            var pageEditableIndex = pageInfo.EditableIndex;

            pageInfo.EditableIndex = 0;

            var content = await parseManager.PathManager.GetIncludeContentAsync(pageInfo.Site, file);

            var contentBuilder = new StringBuilder(content);
            await parseManager.ParseTemplateContentAsync(contentBuilder);

            var parsedContent = contentBuilder.ToString();

            pageInfo.Parameters    = pageParameters;
            pageInfo.IncludeFile   = pageIncludeFile;
            pageInfo.EditableIndex = pageEditableIndex;

            return(parsedContent);
        }
Exemple #3
0
        private static async Task <string> ParseImplAsync(IParseManager parseManager, string loading, string template, bool inline, string onBeforeSend, string onSuccess, string onComplete, string onError)
        {
            await parseManager.PageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.StlClient);

            //运行解析以便为页面生成所需JS引用
            if (!string.IsNullOrEmpty(template))
            {
                await parseManager.ParseInnerContentAsync(new StringBuilder(template));
            }

            var dynamicInfo = new DynamicInfo(parseManager.SettingsManager)
            {
                ElementName     = ElementName,
                SiteId          = parseManager.PageInfo.SiteId,
                ChannelId       = parseManager.ContextInfo.ChannelId,
                ContentId       = parseManager.ContextInfo.ContentId,
                TemplateId      = parseManager.PageInfo.Template.Id,
                ElementId       = StringUtils.GetElementId(),
                LoadingTemplate = loading,
                SuccessTemplate = template,
                OnBeforeSend    = onBeforeSend,
                OnSuccess       = onSuccess,
                OnComplete      = onComplete,
                OnError         = onError
            };

            var dynamicUrl = parseManager.PathManager.GetDynamicApiUrl();

            return(dynamicInfo.GetScript(dynamicUrl, inline));
        }
Exemple #4
0
        private static async Task <string> ParseAsync(IParseManager parseManager, NameValueCollection attributes)
        {
            var pageInfo    = parseManager.PageInfo;
            var contextInfo = parseManager.ContextInfo;

            var innerHtml = string.Empty;

            if (!string.IsNullOrEmpty(contextInfo.InnerHtml))
            {
                var innerBuilder = new StringBuilder(contextInfo.InnerHtml);
                await parseManager.ParseInnerContentAsync(innerBuilder);

                innerHtml = innerBuilder.ToString();
            }

            var parsedContent = string.Empty;

            if (pageInfo.EditMode == EditMode.Visual)
            {
                var elementId = StringUtils.GetElementId();
                VisualUtility.AddEditableToAttributes(attributes, elementId, contextInfo.ElementName);
                parsedContent = GetParsedContent(attributes, innerHtml);
                VisualUtility.AddEditableToPage(pageInfo, elementId, contextInfo, parsedContent);
            }
            else
            {
                parsedContent = GetParsedContent(attributes, innerHtml);
            }

            return(parsedContent);
        }
Exemple #5
0
        public static async Task <object> ParseAsync(IParseManager parseManager)
        {
            var pageInfo    = parseManager.PageInfo;
            var contextInfo = parseManager.ContextInfo;
            var listInfo    = await ListInfo.GetListInfoAsync(parseManager, ParseType.Content);

            var dataSource = await GetContentsDataSourceAsync(parseManager, listInfo);

            if (parseManager.ContextInfo.IsStlEntity)
            {
                return(ParseEntity(dataSource));
            }

            var parsedContent = await ParseAsync(parseManager, listInfo, dataSource);

            if (pageInfo.EditMode == EditMode.Visual)
            {
                var editable           = VisualUtility.GetEditable(pageInfo, contextInfo);
                var editableAttributes = VisualUtility.GetEditableAttributes(editable);

                return(@$ "<div {TranslateUtils.ToAttributesString(editableAttributes)}>{parsedContent}</div>");
            }

            return(parsedContent);
        }
Exemple #6
0
        public static async Task <object> ParseAsync(IParseManager parseManager)
        {
            var listInfo = await ListInfo.GetListInfoAsync(parseManager, ParseType.SqlContent);

            List <KeyValuePair <int, IDictionary <string, object> > > dataSource = null;

            if (!string.IsNullOrEmpty(listInfo.QueryString))
            {
                dataSource = await parseManager.DatabaseManager.ParserGetSqlDataSourceAsync(listInfo.DatabaseType,
                                                                                            listInfo.ConnectionString, listInfo.QueryString);
            }
            else if (listInfo.Query != null)
            {
                dataSource = await parseManager.DatabaseManager.ParserGetSqlDataSourceAsync(listInfo.DatabaseType,
                                                                                            listInfo.ConnectionString, listInfo.Query);
            }

            if (dataSource == null)
            {
                return(string.Empty);
            }

            if (parseManager.ContextInfo.IsStlEntity)
            {
                return(ParseEntity(dataSource));
            }

            return(await ParseElementAsync(parseManager, listInfo, dataSource));
        }
Exemple #7
0
        public static async Task <object> ParseAsync(IParseManager parseManager)
        {
            var pageInfo    = parseManager.PageInfo;
            var contextInfo = parseManager.ContextInfo;
            var listInfo    = await ListInfo.GetListInfoAsync(parseManager, ParseType.Content);

            var dataSource = await GetContentsDataSourceAsync(parseManager, listInfo);

            if (parseManager.ContextInfo.IsStlEntity)
            {
                return(ParseEntity(dataSource));
            }

            var innerHtml = await ParseAsync(parseManager, listInfo, dataSource);

            var parsedContent = string.Empty;

            if (pageInfo.EditMode == EditMode.Visual)
            {
                var elementId  = StringUtils.GetElementId();
                var attributes = new NameValueCollection();
                VisualUtility.AddEditableToAttributes(attributes, elementId, contextInfo.ElementName);
                parsedContent = @$ "<div {TranslateUtils.ToAttributesString(attributes)}>{innerHtml}</div>";
                VisualUtility.AddEditableToPage(pageInfo, elementId, contextInfo, parsedContent);
            }
            else
            {
                parsedContent = innerHtml;
            }

            return(parsedContent);
        }
        public ImportCommand(
            IVBE vbe,
            IFileSystemBrowserFactory dialogFactory,
            IVbeEvents vbeEvents,
            IParseManager parseManager,
            IDeclarationFinderProvider declarationFinderProvider,
            IProjectsProvider projectsProvider,
            IModuleNameFromFileExtractor moduleNameFromFileExtractor,
            IEnumerable <IRequiredBinaryFilesFromFileNameExtractor> binaryFileExtractors,
            IFileSystem fileSystem,
            IMessageBox messageBox)
            : base(vbeEvents)
        {
            _vbe                         = vbe;
            _dialogFactory               = dialogFactory;
            _parseManager                = parseManager;
            _projectsProvider            = projectsProvider;
            _moduleNameFromFileExtractor = moduleNameFromFileExtractor;
            _fileSystem                  = fileSystem;

            _binaryFileExtractors = BinaryFileExtractors(binaryFileExtractors);

            MessageBox = messageBox;
            DeclarationFinderProvider = declarationFinderProvider;

            AddToCanExecuteEvaluation(SpecialEvaluateCanExecute);

            ComponentTypesForExtension = ComponentTypeExtensions.ComponentTypesForExtension(_vbe.Kind);

            AddToCanExecuteEvaluation(SpecialEvaluateCanExecute);
            AddToOnExecuteEvaluation(SpecialEvaluateCanExecute);
        }
        public RenameRefactoring(
            IRefactoringPresenterFactory factory,
            IDeclarationFinderProvider declarationFinderProvider,
            IProjectsProvider projectsProvider,
            IRewritingManager rewritingManager,
            ISelectionProvider selectionProvider,
            ISelectedDeclarationProvider selectedDeclarationProvider,
            IParseManager parseManager,
            IUiDispatcher uiDispatcher)
            : base(rewritingManager, selectionProvider, factory, uiDispatcher)
        {
            _declarationFinderProvider   = declarationFinderProvider;
            _selectedDeclarationProvider = selectedDeclarationProvider;
            _projectsProvider            = projectsProvider;
            _parseManager = parseManager;

            _renameActions = new Dictionary <DeclarationType, Action <RenameModel, IRewriteSession> >
            {
                { DeclarationType.Member, RenameMember },
                { DeclarationType.Parameter, RenameParameter },
                { DeclarationType.Event, RenameEvent },
                { DeclarationType.Variable, RenameVariable },
                { DeclarationType.Module, RenameModule },
                { DeclarationType.Project, RenameProject }
            };
        }
Exemple #10
0
        public static async Task <object> ParseAsync(IParseManager parseManager)
        {
            var tagLevel       = 1;
            var totalNum       = 0;
            var isOrderByCount = false;

            foreach (var name in parseManager.ContextInfo.Attributes.AllKeys)
            {
                var value = parseManager.ContextInfo.Attributes[name];

                if (StringUtils.EqualsIgnoreCase(name, TagLevel))
                {
                    tagLevel = TranslateUtils.ToInt(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, TotalNum))
                {
                    totalNum = TranslateUtils.ToInt(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, IsOrderByCount))
                {
                    isOrderByCount = TranslateUtils.ToBool(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, Context))
                {
                    parseManager.ContextInfo.ContextType = TranslateUtils.ToEnum(value, parseManager.ContextInfo.ContextType);
                }
            }

            return(await ParseImplAsync(parseManager, tagLevel, totalNum, isOrderByCount));
        }
Exemple #11
0
        public static async Task <object> ParseAsync(IParseManager parseManager)
        {
            var zoomId     = string.Empty;
            var fontSize   = 16;
            var attributes = new NameValueCollection();

            foreach (var name in parseManager.ContextInfo.Attributes.AllKeys)
            {
                var value = parseManager.ContextInfo.Attributes[name];

                if (StringUtils.EqualsIgnoreCase(name, ZoomId))
                {
                    zoomId = value;
                }
                else if (StringUtils.EqualsIgnoreCase(name, FontSize))
                {
                    fontSize = TranslateUtils.ToInt(value, 16);
                }
                else
                {
                    TranslateUtils.AddAttributeIfNotExists(attributes, name, value);
                }
            }

            return(await ParseAsync(parseManager, attributes, zoomId, fontSize));
        }
Exemple #12
0
        private static async Task <string> GetValueFromContentAsync(IParseManager parseManager, string testTypeStr)
        {
            var theValue = string.Empty;

            var contentInfo = await parseManager.GetContentAsync();

            if (contentInfo != null)
            {
                if (StringUtils.EqualsIgnoreCase(testTypeStr, "IsTop"))
                {
                    theValue = contentInfo.Get <string>(nameof(Content.Top));
                }
                else if (StringUtils.EqualsIgnoreCase(testTypeStr, "IsRecommend"))
                {
                    theValue = contentInfo.Get <string>(nameof(Content.Recommend));
                }
                else if (StringUtils.EqualsIgnoreCase(testTypeStr, "IsColor"))
                {
                    theValue = contentInfo.Get <string>(nameof(Content.Color));
                }
                else if (StringUtils.EqualsIgnoreCase(testTypeStr, "IsHot"))
                {
                    theValue = contentInfo.Get <string>(nameof(Content.Hot));
                }
                else
                {
                    theValue = contentInfo.Get <string>(testTypeStr);
                }
            }

            return(theValue);
        }
Exemple #13
0
        private static async Task <string> ParseAsync(IParseManager parseManager, NameValueCollection attributes)
        {
            var pageInfo    = parseManager.PageInfo;
            var contextInfo = parseManager.ContextInfo;

            var parsedContent = string.Empty;

            if (!string.IsNullOrEmpty(contextInfo.InnerHtml))
            {
                var innerBuilder = new StringBuilder(contextInfo.InnerHtml);
                await parseManager.ParseInnerContentAsync(innerBuilder);

                parsedContent = innerBuilder.ToString();
            }

            if (pageInfo.EditMode == EditMode.Visual)
            {
                var editable           = VisualUtility.GetEditable(pageInfo, contextInfo);
                var editableAttributes = VisualUtility.GetEditableAttributes(editable);
                foreach (var key in editableAttributes.AllKeys)
                {
                    attributes[key] = editableAttributes[key];
                }

                attributes["id"] = editable.Id;
                attributes["contenteditable"] = "true";
            }

            return(@$ "<div {TranslateUtils.ToAttributesString(attributes)}>{parsedContent}</div>");
        }
Exemple #14
0
        public static async Task <string> GetStlCurrentUrlAsync(IParseManager parseManager, Site site, int channelId, int contentId, Content content, TemplateType templateType, int templateId, bool isLocal)
        {
            var currentUrl = string.Empty;

            if (templateType == TemplateType.IndexPageTemplate)
            {
                currentUrl = await parseManager.PathManager.GetWebUrlAsync(site);
            }
            else if (templateType == TemplateType.ContentTemplate)
            {
                if (content == null)
                {
                    var nodeInfo = await parseManager.DatabaseManager.ChannelRepository.GetAsync(channelId);

                    currentUrl = await parseManager.PathManager.GetContentUrlAsync(site, nodeInfo, contentId, isLocal);
                }
                else
                {
                    currentUrl = await parseManager.PathManager.GetContentUrlAsync(site, content, isLocal);
                }
            }
            else if (templateType == TemplateType.ChannelTemplate)
            {
                currentUrl = await parseManager.PathManager.GetChannelUrlAsync(site, await parseManager.DatabaseManager.ChannelRepository.GetAsync(channelId), isLocal);
            }
            else if (templateType == TemplateType.FileTemplate)
            {
                currentUrl = await parseManager.PathManager.GetFileUrlAsync(site, templateId, isLocal);
            }
            //currentUrl是当前页面的地址,前后台分离的时候,不允许带上protocol
            //return PageUtils.AddProtocolToUrl(currentUrl);
            return(currentUrl);
        }
Exemple #15
0
 public PreviewController(IPathManager pathManager, IParseManager parseManager, IDatabaseManager databaseManager, IChannelRepository channelRepository)
 {
     _pathManager       = pathManager;
     _parseManager      = parseManager;
     _databaseManager   = databaseManager;
     _channelRepository = channelRepository;
 }
Exemple #16
0
        public static async Task <object> ParseAsync(IParseManager parseManager)
        {
            var funcName   = string.Empty;
            var title      = string.Empty;
            var url        = string.Empty;
            var width      = string.Empty;
            var height     = string.Empty;
            var shadeClose = true;
            var offset     = "auto";

            foreach (var name in parseManager.ContextInfo.Attributes.AllKeys)
            {
                var value = parseManager.ContextInfo.Attributes[name];

                if (StringUtils.EqualsIgnoreCase(name, FuncName))
                {
                    funcName = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, Title))
                {
                    title = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, Url))
                {
                    url = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, Width))
                {
                    width = value;
                    if (!string.IsNullOrEmpty(width) && char.IsDigit(width[^ 1]))
Exemple #17
0
        internal static string Parse(string stlEntity, IParseManager parseManager)
        {
            var contextInfo = parseManager.ContextInfo;

            var parsedContent = string.Empty;

            if (contextInfo.ItemContainer?.SqlItem == null)
            {
                return(string.Empty);
            }

            try
            {
                var attributeName = stlEntity.Substring(5, stlEntity.Length - 6);

                if (StringUtils.StartsWithIgnoreCase(attributeName, StlParserUtility.ItemIndex))
                {
                    parsedContent = StlParserUtility.ParseItemIndex(contextInfo.ItemContainer.SqlItem.Key, attributeName, contextInfo).ToString();
                }
                else
                {
                    if (contextInfo.ItemContainer.SqlItem.Value.TryGetValue(attributeName, out var value))
                    {
                        parsedContent = Convert.ToString(value);
                    }
                }
            }
            catch
            {
                // ignored
            }

            return(parsedContent);
        }
Exemple #18
0
        internal static async Task <object> ParseAsync(IParseManager parseManager)
        {
            var testTypeStr  = string.Empty;
            var testOperate  = string.Empty;
            var testValue    = string.Empty;
            var onBeforeSend = string.Empty;
            var onSuccess    = string.Empty;
            var onComplete   = string.Empty;
            var onError      = string.Empty;

            foreach (var name in parseManager.ContextInfo.Attributes.AllKeys)
            {
                var value = parseManager.ContextInfo.Attributes[name];

                if (StringUtils.EqualsIgnoreCase(name, Type) || StringUtils.EqualsIgnoreCase(name, "testType"))
                {
                    testTypeStr = value;
                }
                else if (StringUtils.EqualsIgnoreCase(name, Op) || StringUtils.EqualsIgnoreCase(name, "operate") || StringUtils.EqualsIgnoreCase(name, "testOperate"))
                {
                    testOperate = value;
                }
                else if (StringUtils.EqualsIgnoreCase(name, Value) || StringUtils.EqualsIgnoreCase(name, "testValue"))
                {
                    testValue = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);

                    if (string.IsNullOrEmpty(testOperate))
                    {
                        testOperate = OperateEquals;
                    }
                }
                else if (StringUtils.EqualsIgnoreCase(name, Context))
                {
                    parseManager.ContextInfo.ContextType = TranslateUtils.ToEnum(value, ParseType.Undefined);
                }
                else if (StringUtils.EqualsIgnoreCase(name, OnBeforeSend))
                {
                    onBeforeSend = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, OnSuccess))
                {
                    onSuccess = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, OnComplete))
                {
                    onComplete = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, OnError))
                {
                    onError = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
            }

            if (string.IsNullOrEmpty(testOperate))
            {
                testOperate = OperateNotEmpty;
            }

            return(await ParseImplAsync(parseManager, testTypeStr, testOperate, testValue, onBeforeSend, onSuccess, onComplete, onError));
        }
Exemple #19
0
        public static async Task <string> ParseInDynamicPageAsync(IParseManager parseManager, string stlElement, int currentPageIndex, int pageCount, int totalNum, bool isPageRefresh, string ajaxDivId)
        {
            string parsedContent;

            try
            {
                var stlElementInfo = StlParserUtility.ParseStlElement(stlElement);

                if (pageCount <= 1)
                {
                    return(string.Empty);
                }

                var index  = stlElement.IndexOf(">", StringComparison.Ordinal) + 1;
                var length = stlElement.LastIndexOf("<", StringComparison.Ordinal) - index;
                if (index <= 0 || length <= 0)
                {
                    stlElement = stlElementInfo.InnerHtml;
                }
                else
                {
                    stlElement = stlElement.Substring(index, length);
                }

                parsedContent = await parseManager.ParseStlPageItemsInDynamicPageAsync(stlElement, currentPageIndex, pageCount, totalNum, isPageRefresh, ajaxDivId);
            }
            catch (Exception ex)
            {
                parsedContent = await parseManager.AddStlErrorLogAsync(ElementName, stlElement, ex);
            }

            return(parsedContent);
        }
Exemple #20
0
        private static async Task <string> ParseEntitiesAsync(string type, IParseManager parseManager)
        {
            var databaseManager = parseManager.DatabaseManager;
            var pageInfo        = parseManager.PageInfo;
            var contextInfo     = parseManager.ContextInfo;

            var parsedContent = string.Empty;

            try
            {
                var nodeInfo = await databaseManager.ChannelRepository.GetAsync(contextInfo.ChannelId);

                if (StringUtils.EqualsIgnoreCase(TypePreviousChannel, type) || StringUtils.EqualsIgnoreCase(TypeNextChannel, type))
                {
                    var taxis         = nodeInfo.Taxis;
                    var isNextChannel = !StringUtils.EqualsIgnoreCase(type, TypePreviousChannel);
                    //var siblingChannelId = databaseManager.ChannelRepository.GetIdByParentIdAndTaxis(node.ParentId, taxis, isNextChannel);
                    var siblingChannelId = await databaseManager.ChannelRepository.GetIdByParentIdAndTaxisAsync(pageInfo.SiteId, nodeInfo.ParentId, taxis, isNextChannel);

                    if (siblingChannelId != 0)
                    {
                        var siblingNodeInfo = await databaseManager.ChannelRepository.GetAsync(siblingChannelId);

                        parsedContent = await parseManager.PathManager.GetChannelUrlAsync(pageInfo.Site, siblingNodeInfo, pageInfo.IsLocal);
                    }
                }
                else if (StringUtils.EqualsIgnoreCase(TypePreviousContent, type) || StringUtils.EqualsIgnoreCase(TypeNextContent, type))
                {
                    if (contextInfo.ContentId != 0)
                    {
                        var contentInfo = await parseManager.GetContentAsync();

                        var taxis         = contentInfo.Taxis;
                        var isNextContent = !StringUtils.EqualsIgnoreCase(type, TypePreviousContent);
                        var tableName     = await databaseManager.ChannelRepository.GetTableNameAsync(pageInfo.Site, contextInfo.ChannelId);

                        var siblingContentId = await databaseManager.ContentRepository.GetContentIdAsync(tableName, contextInfo.ChannelId, taxis, isNextContent);

                        if (siblingContentId != 0)
                        {
                            var siblingContentInfo = await databaseManager.ContentRepository.GetAsync(pageInfo.Site, contextInfo.ChannelId, siblingContentId);

                            parsedContent = await parseManager.PathManager.GetContentUrlAsync(pageInfo.Site, siblingContentInfo, pageInfo.IsLocal);
                        }
                    }
                }
            }
            catch
            {
                // ignored
            }

            if (string.IsNullOrEmpty(parsedContent))
            {
                parsedContent = PageUtils.UnClickableUrl;
            }

            return(parsedContent);
        }
 public MemberAttributeRecoverer(IDeclarationFinderProvider declarationFinderProvider,
                                 IParseManager parseManager, IAttributesUpdater attributesUpdater, IMemberAttributeRecoveryFailureNotifier failureNotifier)
 {
     _declarationFinderProvider = declarationFinderProvider;
     _parseManager      = parseManager;
     _attributesUpdater = attributesUpdater;
     _failureNotifier   = failureNotifier;
 }
Exemple #22
0
        private static async Task <bool> TestTypeUpChannelAsync(IParseManager parseManager, string testOperate, string testValue)
        {
            var databaseManager = parseManager.DatabaseManager;
            var pageInfo        = parseManager.PageInfo;
            var contextInfo     = parseManager.ContextInfo;

            var isSuccess = false;

            if (StringUtils.EqualsIgnoreCase(testOperate, OperateNotIn))
            {
                var channelIndexes = ListUtils.GetStringList(testValue);
                var isIn           = false;
                foreach (var channelIndex in channelIndexes)
                {
                    //var parentId = databaseManager.ChannelRepository.GetIdByIndexName(pageInfo.SiteId, channelIndex);
                    var parentId = await databaseManager.ChannelRepository.GetChannelIdByIndexNameAsync(pageInfo.SiteId, channelIndex);

                    if (parentId != pageInfo.PageChannelId &&
                        await databaseManager.ChannelRepository.IsAncestorOrSelfAsync(pageInfo.SiteId, parentId, pageInfo.PageChannelId))
                    {
                        isIn = true;
                        break;
                    }
                }
                if (!isIn)
                {
                    isSuccess = true;
                }
            }
            else
            {
                if (string.IsNullOrEmpty(testValue))
                {
                    if (contextInfo.ChannelId != pageInfo.PageChannelId &&
                        await databaseManager.ChannelRepository.IsAncestorOrSelfAsync(pageInfo.SiteId, contextInfo.ChannelId, pageInfo.PageChannelId))
                    {
                        isSuccess = true;
                    }
                }
                else
                {
                    var channelIndexes = ListUtils.GetStringList(testValue);
                    foreach (var channelIndex in channelIndexes)
                    {
                        //var parentId = databaseManager.ChannelRepository.GetIdByIndexName(pageInfo.SiteId, channelIndex);
                        var parentId = await databaseManager.ChannelRepository.GetChannelIdByIndexNameAsync(pageInfo.SiteId, channelIndex);

                        if (parentId != pageInfo.PageChannelId &&
                            await databaseManager.ChannelRepository.IsAncestorOrSelfAsync(pageInfo.SiteId, parentId, pageInfo.PageChannelId))
                        {
                            isSuccess = true;
                            break;
                        }
                    }
                }
            }
            return(isSuccess);
        }
Exemple #23
0
 protected override IExecutableRewriteSession RewriteSession(IParseManager parseManager, Func <IRewriteSession, bool> rewritingAllowed, out MockRewriterProvider mockProvider, bool rewritersAreDirty = false, ISelectionRecoverer selectionRecoverer = null)
 {
     if (selectionRecoverer == null)
     {
         selectionRecoverer = new Mock <ISelectionRecoverer>().Object;
     }
     mockProvider = new MockRewriterProvider(rewritersAreDirty);
     return(new CodePaneRewriteSession(parseManager, mockProvider, selectionRecoverer, rewritingAllowed));
 }
Exemple #24
0
        internal static async Task <object> ParseAsync(IParseManager parseManager)
        {
            var contextInfo = parseManager.ContextInfo;

            // 如果是实体标签则返回空
            if (contextInfo.IsStlEntity)
            {
                return(string.Empty);
            }

            var inline       = false;
            var onBeforeSend = string.Empty;
            var onSuccess    = string.Empty;
            var onComplete   = string.Empty;
            var onError      = string.Empty;

            foreach (var name in contextInfo.Attributes.AllKeys)
            {
                var value = contextInfo.Attributes[name];

                if (StringUtils.EqualsIgnoreCase(name, Context))
                {
                    contextInfo.ContextType = TranslateUtils.ToEnum(value, ParseType.Undefined);
                }
                else if (StringUtils.EqualsIgnoreCase(name, Inline))
                {
                    inline = TranslateUtils.ToBool(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, OnBeforeSend))
                {
                    onBeforeSend = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, OnSuccess))
                {
                    onSuccess = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, OnComplete))
                {
                    onComplete = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
                else if (StringUtils.EqualsIgnoreCase(name, OnError))
                {
                    onError = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value);
                }
            }

            StlParserUtility.GetLoading(contextInfo.InnerHtml, out var loading, out var template);
            if (!string.IsNullOrEmpty(loading))
            {
                var innerBuilder = new StringBuilder(loading);
                await parseManager.ParseInnerContentAsync(innerBuilder);

                loading = innerBuilder.ToString();
            }

            return(await ParseAsync(parseManager, contextInfo.Site, loading, template, inline, onBeforeSend, onSuccess, onComplete, onError));
        }
Exemple #25
0
 public ActionsPageContentsController(ISettingsManager settingsManager, IAuthManager authManager, IParseManager parseManager, ISiteRepository siteRepository, IChannelRepository channelRepository, ITemplateRepository templateRepository)
 {
     _settingsManager    = settingsManager;
     _authManager        = authManager;
     _parseManager       = parseManager;
     _siteRepository     = siteRepository;
     _channelRepository  = channelRepository;
     _templateRepository = templateRepository;
 }
Exemple #26
0
 public ActionsSearchController(ISettingsManager settingsManager, IAuthManager authManager, IParseManager parseManager, IDatabaseManager databaseManager, ISiteRepository siteRepository, IContentRepository contentRepository)
 {
     _settingsManager   = settingsManager;
     _authManager       = authManager;
     _parseManager      = parseManager;
     _databaseManager   = databaseManager;
     _siteRepository    = siteRepository;
     _contentRepository = contentRepository;
 }
Exemple #27
0
 public StlController(IAuthManager authManager, IPathManager pathManager, IParseManager parseManager, IConfigRepository configRepository, IAccessTokenRepository accessTokenRepository, ISiteRepository siteRepository)
 {
     _authManager           = authManager;
     _pathManager           = pathManager;
     _parseManager          = parseManager;
     _configRepository      = configRepository;
     _accessTokenRepository = accessTokenRepository;
     _siteRepository        = siteRepository;
 }
 public TemplatesPreviewController(ICacheManager cacheManager, IAuthManager authManager, IParseManager parseManager, ISiteRepository siteRepository, IChannelRepository channelRepository, IContentRepository contentRepository)
 {
     _cacheManager      = cacheManager;
     _authManager       = authManager;
     _parseManager      = parseManager;
     _siteRepository    = siteRepository;
     _channelRepository = channelRepository;
     _contentRepository = contentRepository;
 }
 public ExtractInterfaceRefactoring(IDeclarationFinderProvider declarationFinderProvider, IParseManager parseManager, IMessageBox messageBox, IRefactoringPresenterFactory factory, IRewritingManager rewritingManager, ISelectionService selectionService)
 {
     _declarationFinderProvider = declarationFinderProvider;
     _parseManager     = parseManager;
     _rewritingManager = rewritingManager;
     _messageBox       = messageBox;
     _selectionService = selectionService;
     _presenterFactory = ((model) => DisposalActionContainer.Create(factory.Create <IExtractInterfacePresenter, ExtractInterfaceModel>(model), factory.Release));
 }
Exemple #30
0
        private static async Task <string> ParseImplAsync(IParseManager parseManager, string type, string playUrl, bool isAutoPlay, bool isPreLoad, bool isLoop)
        {
            var pageInfo    = parseManager.PageInfo;
            var contextInfo = parseManager.ContextInfo;

            var contentId = contextInfo.ContentId;

            if (string.IsNullOrEmpty(playUrl))
            {
                if (contentId != 0)//获取内容视频
                {
                    var contentInfo = await parseManager.GetContentAsync();

                    if (contentInfo != null)
                    {
                        playUrl = contentInfo.Get <string>(type);
                        if (string.IsNullOrEmpty(playUrl))
                        {
                            playUrl = contentInfo.VideoUrl;
                        }
                        if (string.IsNullOrEmpty(playUrl))
                        {
                            playUrl = contentInfo.FileUrl;
                        }
                    }
                }
            }

            if (string.IsNullOrEmpty(playUrl))
            {
                return(string.Empty);
            }

            playUrl = await parseManager.PathManager.ParseSiteUrlAsync(pageInfo.Site, playUrl, pageInfo.IsLocal);

            // 如果是实体标签,则只返回数字
            if (contextInfo.IsStlEntity)
            {
                return(playUrl);
            }

            await pageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.Jquery);

            await pageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.JsAcMediaElement);

            var url = parseManager.PathManager.GetSiteFilesUrl(Resources.MediaElement.Swf);

            return($@"
<audio class=""mejs__player"" src=""{playUrl}"" {(isAutoPlay ? "autoplay" : string.Empty)} {(isPreLoad ? string.Empty : @"preload=""none""")} {(isLoop ? "loop" : string.Empty)}>
    <object width=""460"" height=""40"" type=""application/x-shockwave-flash"" data=""{url}"">
        <param name=""movie"" value=""{url}"" />
        <param name=""flashvars"" value=""controls=true&file={playUrl}"" />
    </object>
</audio>
");
        }