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); } }
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; }
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); }
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; }
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; }
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; }
private void ResetReleaseStatusTo(PageReleaseStatus value) { IsInitialized = false; _releaseStatus = value; Status = PageState.NotSet; }
private static bool IsReleasedIntoWorkflow(PageReleaseStatus value, PageReleaseStatus flag) { return value == PageReleaseStatus.Released && flag.HasFlag(PageReleaseStatus.WorkFlow); }
public void ResetToDraft() { ReleaseStatus = PageReleaseStatus.Draft; }
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); }
private void ResetReleaseStatusTo(PageReleaseStatus value) { IsInitialized = false; _releaseStatus = value; Status = PageState.NotSet; }
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; }
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; }
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); } }
private static bool IsReleasedIntoWorkflow(PageReleaseStatus value, PageReleaseStatus flag) { return value == PageReleaseStatus.Released && flag.HasFlag(PageReleaseStatus.WorkFlow); }
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; }