private PreassignedWorkflow GetPreassignedContentWorkflow(ILanguageVariant languageVariant)
 {
     using (new LanguageContext(languageVariant))
     {
         return(LoadPreassignedContentWorkflow());
     }
 }
Beispiel #2
0
        /// <summary>
        ///     Set the text content of a text element. This method exists, because it needs a different RQL element layout than all other queries.
        /// </summary>
        /// <param name="projectGuid"> Guid of the project containing the element </param>
        /// <param name="languageVariant"> Language variant for setting the text in </param>
        /// <param name="textElementGuid"> Guid of the text element </param>
        /// <param name="typeString"> texttype value </param>
        /// <param name="content"> new value </param>
        /// <returns> Guid of the text element </returns>
        public Guid SetTextContent(Guid projectGuid, ILanguageVariant languageVariant, Guid textElementGuid,
                                   string typeString, string content)
        {
            const string SAVE_TEXT_CONTENT =
                @"<IODATA loginguid=""{0}"" format=""1"" sessionkey=""{1}""><PROJECT><TEXT action=""save"" guid=""{2}"" texttype=""{3}"" >{4}</TEXT></PROJECT></IODATA>";

            SelectProject(projectGuid);
            languageVariant.Select();
            string rqlResult =
                SendRQLToServer(string.Format(SAVE_TEXT_CONTENT, _loginGuidStr, _sessionKeyStr,
                                              textElementGuid == Guid.Empty ? "" : textElementGuid.ToRQLString(),
                                              typeString, HttpUtility.HtmlEncode(content)));

            //in version 11.2 the server returns <guid>\r\n, but we are only interested in the guid -> Trim()
            string resultGuidStr = XElement.Load(new StringReader(rqlResult)).Value.Trim();

            //result guid is empty, if the value was set to the same value it had before
            if (string.IsNullOrEmpty(resultGuidStr))
            {
                return(textElementGuid);
            }

            Guid newGuid;

            if (!Guid.TryParse(resultGuidStr, out newGuid) ||
                (textElementGuid != Guid.Empty && textElementGuid != newGuid))
            {
                throw new SmartAPIException(ServerLogin, "Could not set text for: {0}".RQLFormat(textElementGuid));
            }
            return(newGuid);
        }
 /// <summary>
 ///     Create an element out of its XML representation (uses the attribute "elttype") to determine the element type and create the appropriate object.
 /// </summary>
 /// <param name="project"> Project containing the element </param>
 /// <param name="elementGuid"> Guid of the element </param>
 /// <param name="languageVariant">The language variant of the page element</param>
 /// <exception cref="ArgumentException">if the "elttype" attribute of the XML node contains an unknown value</exception>
 public static IPageElement CreateElement(IProject project, Guid elementGuid, ILanguageVariant languageVariant)
 {
     using (new LanguageContext(languageVariant))
     {
         XmlDocument xmlDoc  = project.ExecuteRQL(string.Format(RETRIEVE_PAGE_ELEMENT, elementGuid.ToRQLString()));
         var         xmlNode = (XmlElement)xmlDoc.GetElementsByTagName("ELT")[0];
         return(CreateElement(project, xmlNode));
     }
 }
        public void Remove(IProjectVariant projectVariant, ILanguageVariant languageVariant)
        {
            var entry =
                this.FirstOrDefault(x => x.ProjectVariant.Guid == projectVariant.Guid && x.LanguageVariant.Guid == languageVariant.Guid);

            if (entry != null)
            {
                entry.Delete();
            }
        }
Beispiel #5
0
        /// <summary>
        ///     Get the text content of a text element. This method exists, because it needs a different RQL element layout than all other queries.
        /// </summary>
        /// <param name="projectGuid"> Guid of the project containing the element </param>
        /// <param name="lang"> Language variant to get the text from </param>
        /// <param name="elementGuid"> Guid of the text element </param>
        /// <param name="typeString"> texttype value </param>
        /// <returns> text content of the element </returns>
        public string GetTextContent(Guid projectGuid, ILanguageVariant lang, Guid elementGuid, string typeString)
        {
            const string LOAD_TEXT_CONTENT =
                @"<IODATA loginguid=""{0}"" format=""1"" sessionkey=""{1}""><PROJECT><TEXT action=""load"" guid=""{2}"" texttype=""{3}""/></PROJECT></IODATA>";

            SelectProject(projectGuid);
            lang.Select();
            return
                (SendRQLToServer(string.Format(LOAD_TEXT_CONTENT, _loginGuidStr, _sessionKeyStr,
                                               elementGuid.ToRQLString(), typeString)));
        }
        public void Add(IProjectVariant projectVariant, ILanguageVariant languageVariant)
        {
            const string ADD =
                @"<PROJECT><EXPORTSETTING action=""save"" guid=""{0}"" projectvariantguid=""{1}"" languagevariantguid=""{2}"" copyguid="""" /></PROJECT>";

            var doc = Project.ExecuteRQL(ADD.RQLFormat(PublicationPackage, projectVariant, languageVariant.Guid.ToRQLString()));

            //TODO check answer?

            InvalidateCache();
        }
Beispiel #7
0
        public string ConvertFrom(IProjectObject parent, XmlElement element, RedDotAttribute attribute)
        {
            ILanguageVariant lang = parent.Project.LanguageVariants.Current;

            if (!element.IsAttributeSet(parent, attribute.ElementName))
            {
                return(string.Empty);
            }

            Guid guid = element.GetGuid(attribute.ElementName);

            return(parent.Project.GetTextContent(guid, lang, ((int)Type).ToString(CultureInfo.InvariantCulture)));
        }
 public bool TryGetByGuid(Guid pageGuid, ILanguageVariant languageVariant, out IPage page)
 {
     try
     {
         page = GetByGuid(pageGuid, languageVariant);
         return(true);
     }
     catch (SmartAPIException)
     {
         page = null;
         return(false);
     }
 }
        private IndexedRDList <int, IPage> GetPagesForLanguageVariant(string language)
        {
            ILanguageVariant languageVariant = _project.LanguageVariants[language];

            using (new LanguageContext(languageVariant))
            {
                return(_pagesByLanguage.GetOrAdd(
                           language,
                           () => new IndexedRDList <int, IPage>(
                               () =>
                {
                    using (new LanguageContext(languageVariant))
                    {
                        return GetPages();
                    }
                },
                               x => x.Id,
                               Caching.Enabled)));
            }
        }
        public IPreassignedWorkflow GetContentWorkflowFor(ILanguageVariant languageVariant)
        {
            IPreassignedWorkflow workflow;

            if (!_preassignedContentWorkflows.TryGetValue(languageVariant, out workflow))
            {
                workflow = GetPreassignedContentWorkflow(languageVariant);

                if (workflow == null)
                {
                    _preassignedContentWorkflows[languageVariant] = null;
                    return(null);
                }

                foreach (var curLanguage in workflow.LanguageVariantsPreassignedTo)
                {
                    _preassignedContentWorkflows[curLanguage] = workflow;
                }
            }
            return(workflow);
        }
Beispiel #11
0
        /// <summary>
        ///     Copy selected elements from this content class to another target content class.
        /// </summary>
        /// <param name="targetCC"> Target content class to copy the elements to </param>
        /// <param name="elementNames"> Names of the elements to copy </param>
        public void CopyElementsToContentClass(IContentClass targetCC, params string[] elementNames)
        {
            if (elementNames == null || elementNames.Length == 0)
            {
                return;
            }

            var createdElements = new Dictionary <string, IContentClassElement>();

            using (new LanguageContext(Project))
            {
                var assign = new AttributeAssignment();
                foreach (var languageVariant in Project.LanguageVariants)
                {
                    ILanguageVariant targetLanguageVariant =
                        targetCC.Project.LanguageVariants[languageVariant.Abbreviation];
                    foreach (var curElementName in elementNames)
                    {
                        IContentClassElement curTargetContentClassElement;
                        languageVariant.Select();
                        var curSourceContentClassElement = Elements[curElementName];
                        if (createdElements.TryGetValue(curElementName, out curTargetContentClassElement))
                        {
                            targetLanguageVariant.Select();
                            assign.AssignAllRedDotAttributesForLanguage(curSourceContentClassElement,
                                                                        curTargetContentClassElement,
                                                                        targetLanguageVariant.Abbreviation);
                            curTargetContentClassElement.CommitInCurrentLanguage();
                        }
                        else
                        {
                            targetLanguageVariant.Select();
                            curTargetContentClassElement = curSourceContentClassElement.CopyToContentClass(targetCC);
                            createdElements.Add(curElementName, curTargetContentClassElement);
                        }
                    }
                }
            }
        }
Beispiel #12
0
 protected PageElement(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid)
 {
     LanguageVariant = languageVariant;
 }
 private PreassignedWorkflow GetPreassignedContentWorkflow(ILanguageVariant languageVariant)
 {
     using (new LanguageContext(languageVariant))
     {
         return LoadPreassignedContentWorkflow();
     }
 }
 public ListEntry(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
 IIndexedRDList <string, IPage> ILanguageDependentReadValue <IIndexedRDList <string, IPage> > .this[ILanguageVariant languageVariant]
 {
     get
     {
         return(_startPagesByLanguageVariant.GetOrAdd(languageVariant, () => GetStartPages(languageVariant)));//startPageGuids == null ? new IndexedRDList<string, IPage>(()=>new List<IPage>(), x=>x.Headline, Caching.Enabled) : _startPagesByLanguageVariant.GetOrAdd(languageVariant, ()=>GetStartPages(languageVariant));
     }
 }
 private List <IPage> Refreshed(ILanguageVariant languageVariant)
 {
     Refresh();
     return(_startPageGuids.Select(x => _project.Pages.GetByGuid(x, languageVariant)).ToList());
 }
 protected StandardField(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
 protected AbstractMultiLinkElement(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
     Connections = new MultiLinkConnections(this, Caching.Enabled);
 }
 public IPreassignedWorkflow GetContentWorkflowFor(ILanguageVariant languageVariant)
 {
     return _workflowAssignments.GetContentWorkflowFor(languageVariant);
 }
Beispiel #20
0
 public ListEntry(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #21
0
 internal AnchorAsImage(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #22
0
 public Background(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #23
0
 public Container(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #24
0
 public IPageElement CreateElement(IProject project, Guid elementGuid, ILanguageVariant languageVariant)
 {
     return PageElement.CreateElement(project, elementGuid, languageVariant);
 }
Beispiel #25
0
 /// <summary>
 ///     Create an element out of its XML representation (uses the attribute "elttype") to determine the element type and create the appropriate object.
 /// </summary>
 /// <param name="project"> Project containing the element </param>
 /// <param name="elementGuid"> Guid of the element </param>
 /// <param name="languageVariant">The language variant of the page element</param>
 /// <exception cref="ArgumentException">if the "elttype" attribute of the XML node contains an unknown value</exception>
 public static IPageElement CreateElement(IProject project, Guid elementGuid, ILanguageVariant languageVariant)
 {
     using (new LanguageContext(languageVariant))
     {
         XmlDocument xmlDoc = project.ExecuteRQL(string.Format(RETRIEVE_PAGE_ELEMENT, elementGuid.ToRQLString()));
         var xmlNode = (XmlElement) xmlDoc.GetElementsByTagName("ELT")[0];
         return CreateElement(project, xmlNode);
     }
 }
Beispiel #26
0
 public Media(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
 protected AbstractMultiLinkElement(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
     Connections = new MultiLinkConnections(this, Caching.Enabled);
 }
Beispiel #28
0
 protected Text(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #29
0
 public TextAscii(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
 public IPage GetByGuid(Guid pageGuid, ILanguageVariant languageVariant)
 {
     return(new Page(_project, pageGuid, languageVariant).Refreshed());
 }
Beispiel #31
0
 public SiteMap(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #32
0
 internal Page(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid)
 {
     _lang = languageVariant;
     InitProperties();
 }
Beispiel #33
0
 public IPreassignedWorkflow GetContentWorkflowFor(ILanguageVariant languageVariant)
 {
     return(_workflowAssignments.GetContentWorkflowFor(languageVariant));
 }
 private IIndexedRDList <string, IPage> GetStartPages(ILanguageVariant languageVariant)
 {
     return(new IndexedRDList <string, IPage>(() => Refreshed(languageVariant), x => x.Headline, Caching.Enabled));
 }
 protected AbstractValueElement(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
        public IPreassignedWorkflow GetContentWorkflowFor(ILanguageVariant languageVariant)
        {
            IPreassignedWorkflow workflow;
            if (!_preassignedContentWorkflows.TryGetValue(languageVariant, out workflow))
            {
                workflow = GetPreassignedContentWorkflow(languageVariant);

                if (workflow == null)
                {
                    _preassignedContentWorkflows[languageVariant] = null;
                    return null;
                }

                foreach (var curLanguage in workflow.LanguageVariantsPreassignedTo)
                {
                    _preassignedContentWorkflows[curLanguage] = workflow;
                }
            }
            return workflow;
        }
Beispiel #37
0
 /// <summary>
 ///     Get the text content of a text element. This method exists, because it needs a different RQL element layout than all other queries.
 /// </summary>
 /// <param name="projectGuid"> Guid of the project containing the element </param>
 /// <param name="lang"> Language variant to get the text from </param>
 /// <param name="elementGuid"> Guid of the text element </param>
 /// <param name="typeString"> texttype value </param>
 /// <returns> text content of the element </returns>
 public string GetTextContent(Guid projectGuid, ILanguageVariant lang, Guid elementGuid, string typeString)
 {
     const string LOAD_TEXT_CONTENT =
         @"<IODATA loginguid=""{0}"" format=""1"" sessionkey=""{1}""><PROJECT><TEXT action=""load"" guid=""{2}"" texttype=""{3}""/></PROJECT></IODATA>";
     SelectProject(projectGuid);
     lang.Select();
     return
         SendRQLToServer(string.Format(LOAD_TEXT_CONTENT, _loginGuidStr, _sessionKeyStr,
                                       elementGuid.ToRQLString(), typeString));
 }
 protected AbstractKeywordAssignableMultiLinkElement(IProject project, Guid guid,
                                                     ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
     Init();
 }
Beispiel #39
0
 protected AbstractLinkElement(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
     Connections = new LinkConnections(this, Caching.Enabled);
     ReferencedFrom = new RDList<ILinkElement>(GetReferencingLinks, Caching.Enabled);
 }
Beispiel #40
0
 public Area(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #41
0
 public ProjectContent(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #42
0
 public HitList(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #43
0
        /// <summary>
        ///     Selects a language variant and restores the previously selected language variant on dispose.
        /// </summary>
        /// <param name="lang"> </param>
        public LanguageContext(ILanguageVariant lang)
        {
            _origLang = lang.Project.LanguageVariants.Current;

            lang.Select();
        }
Beispiel #44
0
 public T this[ILanguageVariant languageVariant]
 {
     get { return(this[languageVariant.Abbreviation]); }
 }
Beispiel #45
0
 /// <summary>
 ///     Just restores the language context on dispose. Does not set a specific language variant on construction.
 /// </summary>
 public LanguageContext(IProject project)
 {
     _origLang = project.LanguageVariants.Current;
 }
Beispiel #46
0
 public AnchorAsText(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #47
0
 /// <see cref="CMS.Session.SetTextContent" />
 public Guid SetTextContent(Guid textElementGuid, ILanguageVariant languageVariant, string typeString, string content)
 {
     return(Session.SetTextContent(Guid, languageVariant, textElementGuid, typeString, content));
 }
        /// <summary>
        ///     Selects a language variant and restores the previously selected language variant on dispose.
        /// </summary>
        /// <param name="lang"> </param>
        public LanguageContext(ILanguageVariant lang)
        {
            _origLang = lang.Project.LanguageVariants.Current;

            lang.Select();
        }
 /// <summary>
 ///     Just restores the language context on dispose. Does not set a specific language variant on construction.
 /// </summary>
 public LanguageContext(IProject project)
 {
     _origLang = project.LanguageVariants.Current;
 }
 public StandardFieldDate(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #51
0
 public HitList(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }
Beispiel #52
0
        /// <summary>
        ///     Set the text content of a text element. This method exists, because it needs a different RQL element layout than all other queries.
        /// </summary>
        /// <param name="projectGuid"> Guid of the project containing the element </param>
        /// <param name="languageVariant"> Language variant for setting the text in </param>
        /// <param name="textElementGuid"> Guid of the text element </param>
        /// <param name="typeString"> texttype value </param>
        /// <param name="content"> new value </param>
        /// <returns> Guid of the text element </returns>
        public Guid SetTextContent(Guid projectGuid, ILanguageVariant languageVariant, Guid textElementGuid,
                                   string typeString, string content)
        {
            const string SAVE_TEXT_CONTENT =
                @"<IODATA loginguid=""{0}"" format=""1"" sessionkey=""{1}""><PROJECT><TEXT action=""save"" guid=""{2}"" texttype=""{3}"" >{4}</TEXT></PROJECT></IODATA>";
            SelectProject(projectGuid);
            languageVariant.Select();
            string rqlResult =
                SendRQLToServer(string.Format(SAVE_TEXT_CONTENT, _loginGuidStr, _sessionKeyStr,
                                              textElementGuid == Guid.Empty ? "" : textElementGuid.ToRQLString(),
                                              typeString, HttpUtility.HtmlEncode(content)));

            //in version 11.2 the server returns <guid>\r\n, but we are only interested in the guid -> Trim()
            string resultGuidStr = XElement.Load(new StringReader(rqlResult)).Value.Trim();

            //result guid is empty, if the value was set to the same value it had before
            if (string.IsNullOrEmpty(resultGuidStr))
            {
                return textElementGuid;
            }

            Guid newGuid;
            if (!Guid.TryParse(resultGuidStr, out newGuid) ||
                (textElementGuid != Guid.Empty && textElementGuid != newGuid))
            {
                throw new SmartAPIException(ServerLogin, "Could not set text for: {0}".RQLFormat(textElementGuid));
            }
            return newGuid;
        }
Beispiel #53
0
 public SiteMap(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
 }