Exemplo n.º 1
0
        private void CheckReleaseStatusSettingSuccess(PageReleaseStatus value, XmlDocument xmlDoc)
        {
            XmlNodeList pageElements = xmlDoc.GetElementsByTagName("PAGE");
            if (pageElements.Count != 1)
            {
                var missingKeywords = xmlDoc.SelectNodes("/IODATA/EMPTYELEMENTS/ELEMENT[@type='1002']");
                if (missingKeywords != null && missingKeywords.Count != 0)
                {
                    throw new MissingKeywordsException(this, GetNames(missingKeywords));
                }

                var missingElements = xmlDoc.SelectNodes("/IODATA/EMPTYELEMENTS/ELEMENT");
                if (missingElements != null && missingElements.Count > 0)
                {
                    throw new MissingElementValueException(this, GetNames(missingElements));
                }

                throw new PageStatusException(this, "Could not set release status to " + value);
            }
            var element = (XmlElement) pageElements[0];
            var flag = (PageReleaseStatus) element.GetIntAttributeValue("actionflag")
                                               .GetValueOrDefault();

            if (!flag.HasFlag(value) && !IsReleasedIntoWorkflow(value, flag))
            {
                throw new PageStatusException(this, "Could not set release status to " + value);
            }
        }
Exemplo n.º 2
0
        private void LoadXml()
        {
            //TODO schoenere loesung fuer partielles nachladen von pages wegen unterschiedlicher anfragen fuer unterschiedliche infos
            try
            {
                EnsuredInit(ref _id, "id", int.Parse);
                EnsuredInit(ref _lang, "languagevariantid", Project.LanguageVariants.Get);
            }
            catch (SmartAPIException e)
            {
                throw new NoSuchPageException(e);
            }
            //parentguid seems to be the mainlinkguid
            //InitIfPresent(ref _parentPage, "parentguid", x => new Page(Project, GuidConvert(x), LanguageVariant));
            InitIfPresent(ref _headline, "headline", x => x);
            InitIfPresent(ref _pageFlags, "flags", x => (PageFlags) int.Parse(x));
            InitIfPresent(ref _ccGuid, "templateguid", Guid.Parse);
            InitIfPresent(ref _pageState, "status", x => (PageState) int.Parse(x));

            _releaseStatus = ReleaseStatusFromFlags();

            _checkinDate = _xmlElement.GetOADate("checkindate")
                .GetValueOrDefault();

            InitIfPresent(ref _mainLinkGuid, "mainlinkguid", GuidConvert);
            InitIfPresent(ref _releaseDate, "releasedate", XmlUtil.ToOADate);
            InitIfPresent(ref _createDate, "createdate", XmlUtil.ToOADate);
            InitIfPresent(ref _changeDate, "changeDate", XmlUtil.ToOADate);

            var mainLinkElement = (XmlElement) _xmlElement.GetElementsByTagName("MAINLINK")[0];
            _mainLinkNavigationGuid = mainLinkElement != null ? mainLinkElement.GetGuid() : Guid.Empty;
        }
Exemplo n.º 3
0
        private void SaveReleaseStatus(PageReleaseStatus value)
        {
            const string SET_RELEASE_STATUS = @"<PAGE action=""save"" guid=""{0}"" actionflag=""{1}""/>";
            XmlDocument  xmlDoc             = Project.ExecuteRQL(string.Format(SET_RELEASE_STATUS, Guid.ToRQLString(), (int)value));

            CheckReleaseStatusSettingSuccess(value, xmlDoc);
        }
Exemplo n.º 4
0
 public void Restore()
 {
     const string RESTORE_PAGE =
         @"<PAGE action=""restore"" guid=""{0}"" alllanguages="""" forcedelete2910="""" forcedelete2911=""""/>";
     Project.ExecuteRQL(string.Format(RESTORE_PAGE, Guid.ToRQLString()));
     IsInitialized = false;
     ReleaseStatus = PageReleaseStatus.NotSet;
     Status = PageState.NotSet;
 }
Exemplo n.º 5
0
 private void DeleteImpl(bool forceDeletion)
 {
     try
     {
         const string DELETE_PAGE =
             @"<PAGE action=""delete"" guid=""{0}"" forcedelete2910=""{1}"" forcedelete2911=""{1}""><LANGUAGEVARIANTS><LANGUAGEVARIANT language=""{2}""/></LANGUAGEVARIANTS></PAGE>";
         XmlDocument xmlDoc = Project.ExecuteRQL(DELETE_PAGE.RQLFormat(this, forceDeletion, LanguageVariant.Abbreviation));
         if (!xmlDoc.IsContainingOk())
         {
             throw new PageDeletionException(Project.Session.ServerLogin, string.Format("Could not delete page {0}", this));
         }
     }
     catch (RQLException e)
     {
         throw new PageDeletionException(e);
     }
     IsInitialized = false;
     _releaseStatus = PageReleaseStatus.NotSet;
     Status = PageState.NotSet;
 }
Exemplo n.º 6
0
        public void DeleteFromRecycleBin()
        {
            using (new LanguageContext(LanguageVariant))
            {
                const string DELETE_FINALLY =
                    @"<PAGE action=""deletefinally"" guid=""{0}"" alllanguages="""" forcedelete2910="""" forcedelete2911=""""/>";
                Project.ExecuteRQL(string.Format(DELETE_FINALLY, Guid.ToRQLString()));

                const string MARK_DIRTY =
                    @"<PAGEBUILDER><PAGES sessionkey=""{0}"" action=""pagevaluesetdirty""><PAGE sessionkey=""{0}"" guid=""{1}"" languages=""{2}""/></PAGES></PAGEBUILDER>";
                Project.Session.ExecuteRQLRaw(
                                              MARK_DIRTY.RQLFormat(Project.Session.SessionKey, this, LanguageVariant.Abbreviation),
                                              RQL.IODataFormat.SessionKeyOnly);

                const string LINKING =
                    @"<PAGEBUILDER><LINKING sessionkey=""{0}""><PAGES><PAGE sessionkey=""{0}"" guid=""{1}""/></PAGES></LINKING></PAGEBUILDER>";
                Project.Session.ExecuteRQLRaw(LINKING.RQLFormat(Project.Session.SessionKey, this), RQL.IODataFormat.SessionKeyOnly);
            }
            IsInitialized = false;
            _releaseStatus = PageReleaseStatus.NotSet;
            Status = PageState.NotSet;
        }
Exemplo n.º 7
0
 private void ResetReleaseStatusTo(PageReleaseStatus value)
 {
     IsInitialized = false;
     _releaseStatus = value;
     Status = PageState.NotSet;
 }
Exemplo n.º 8
0
 private static bool IsReleasedIntoWorkflow(PageReleaseStatus value, PageReleaseStatus flag)
 {
     return value == PageReleaseStatus.Released && flag.HasFlag(PageReleaseStatus.WorkFlow);
 }
Exemplo n.º 9
0
 public void ResetToDraft()
 {
     ReleaseStatus = PageReleaseStatus.Draft;
 }
Exemplo n.º 10
0
 private void SaveReleaseStatus(PageReleaseStatus value)
 {
     const string SET_RELEASE_STATUS = @"<PAGE action=""save"" guid=""{0}"" actionflag=""{1}""/>";
     XmlDocument xmlDoc = Project.ExecuteRQL(string.Format(SET_RELEASE_STATUS, Guid.ToRQLString(), (int) value));
     CheckReleaseStatusSettingSuccess(value, xmlDoc);
 }
Exemplo n.º 11
0
 private void ResetReleaseStatusTo(PageReleaseStatus value)
 {
     IsInitialized = false;
     _releaseStatus = value;
     Status = PageState.NotSet;
 }
Exemplo n.º 12
0
        private void LoadXml()
        {
            //TODO schoenere loesung fuer partielles nachladen von pages wegen unterschiedlicher anfragen fuer unterschiedliche infos
            try
            {
                EnsuredInit(ref _id, "id", int.Parse);
                EnsuredInit(ref _lang, "languagevariantid", Project.LanguageVariants.Get);
            }
            catch (SmartAPIException e)
            {
                throw new NoSuchPageException(e);
            }
            //parentguid seems to be the mainlinkguid
            //InitIfPresent(ref _parentPage, "parentguid", x => new Page(Project, GuidConvert(x), LanguageVariant));
            InitIfPresent(ref _headline, "headline", x => x);
            InitIfPresent(ref _pageFlags, "flags", x => (PageFlags) int.Parse(x));
            InitIfPresent(ref _ccGuid, "templateguid", Guid.Parse);
            InitIfPresent(ref _pageState, "status", x => (PageState) int.Parse(x));

            _releaseStatus = ReleaseStatusFromFlags();

            _checkinDate = _xmlElement.GetOADate("checkindate")
                .GetValueOrDefault();

            InitIfPresent(ref _mainLinkGuid, "mainlinkguid", GuidConvert);
            InitIfPresent(ref _releaseDate, "releasedate", XmlUtil.ToOADate);
            InitIfPresent(ref _createDate, "createdate", XmlUtil.ToOADate);
            InitIfPresent(ref _changeDate, "changeDate", XmlUtil.ToOADate);

            var mainLinkElement = (XmlElement) _xmlElement.GetElementsByTagName("MAINLINK")[0];
            _mainLinkNavigationGuid = mainLinkElement != null ? mainLinkElement.GetGuid() : Guid.Empty;
        }
Exemplo n.º 13
0
 private void DeleteImpl(bool forceDeletion)
 {
     try
     {
         const string DELETE_PAGE =
             @"<PAGE action=""delete"" guid=""{0}"" forcedelete2910=""{1}"" forcedelete2911=""{1}""><LANGUAGEVARIANTS><LANGUAGEVARIANT language=""{2}""/></LANGUAGEVARIANTS></PAGE>";
         XmlDocument xmlDoc = Project.ExecuteRQL(DELETE_PAGE.RQLFormat(this, forceDeletion, LanguageVariant.Abbreviation));
         if (!xmlDoc.IsContainingOk())
         {
             throw new PageDeletionException(Project.Session.ServerLogin, string.Format("Could not delete page {0}", this));
         }
     }
     catch (RQLException e)
     {
         throw new PageDeletionException(e);
     }
     IsInitialized = false;
     _releaseStatus = PageReleaseStatus.NotSet;
     Status = PageState.NotSet;
 }
Exemplo n.º 14
0
        private void CheckReleaseStatusSettingSuccess(PageReleaseStatus value, XmlDocument xmlDoc)
        {
            XmlNodeList pageElements = xmlDoc.GetElementsByTagName("PAGE");
            if (pageElements.Count != 1)
            {
                var missingKeywords = xmlDoc.SelectNodes("/IODATA/EMPTYELEMENTS/ELEMENT[@type='1002']");
                if (missingKeywords != null && missingKeywords.Count != 0)
                {
                    throw new MissingKeywordsException(this, GetNames(missingKeywords));
                }

                var missingElements = xmlDoc.SelectNodes("/IODATA/EMPTYELEMENTS/ELEMENT");
                if (missingElements != null && missingElements.Count > 0)
                {
                    throw new MissingElementValueException(this, GetNames(missingElements));
                }

                throw new PageStatusException(this, "Could not set release status to " + value);
            }
            var element = (XmlElement) pageElements[0];
            var flag = (PageReleaseStatus) element.GetIntAttributeValue("actionflag")
                                               .GetValueOrDefault();

            if (!flag.HasFlag(value) && !IsReleasedIntoWorkflow(value, flag))
            {
                throw new PageStatusException(this, "Could not set release status to " + value);
            }
        }
Exemplo n.º 15
0
 private static bool IsReleasedIntoWorkflow(PageReleaseStatus value, PageReleaseStatus flag)
 {
     return value == PageReleaseStatus.Released && flag.HasFlag(PageReleaseStatus.WorkFlow);
 }
Exemplo n.º 16
0
        public void DeleteFromRecycleBin()
        {
            using (new LanguageContext(LanguageVariant))
            {
                const string DELETE_FINALLY =
                    @"<PAGE action=""deletefinally"" guid=""{0}"" alllanguages="""" forcedelete2910="""" forcedelete2911=""""/>";
                Project.ExecuteRQL(string.Format(DELETE_FINALLY, Guid.ToRQLString()));

                const string MARK_DIRTY =
                    @"<PAGEBUILDER><PAGES sessionkey=""{0}"" action=""pagevaluesetdirty""><PAGE sessionkey=""{0}"" guid=""{1}"" languages=""{2}""/></PAGES></PAGEBUILDER>";
                Project.Session.ExecuteRQLRaw(
                                              MARK_DIRTY.RQLFormat(Project.Session.SessionKey, this, LanguageVariant.Abbreviation),
                                              RQL.IODataFormat.SessionKeyOnly);

                const string LINKING =
                    @"<PAGEBUILDER><LINKING sessionkey=""{0}""><PAGES><PAGE sessionkey=""{0}"" guid=""{1}""/></PAGES></LINKING></PAGEBUILDER>";
                Project.Session.ExecuteRQLRaw(LINKING.RQLFormat(Project.Session.SessionKey, this), RQL.IODataFormat.SessionKeyOnly);
            }
            IsInitialized = false;
            _releaseStatus = PageReleaseStatus.NotSet;
            Status = PageState.NotSet;
        }