diff options
author | Ashod Nakashian <ashod.nakashian@collabora.co.uk> | 2017-10-18 13:09:59 +0400 |
---|---|---|
committer | Ashod Nakashian <ashnakash@gmail.com> | 2017-10-22 07:12:48 +0200 |
commit | db61ca5b3abbd2df433bcab516f8fa2cfbc01944 (patch) | |
tree | 28a09d8a15c749284900dca91444bf0aebb02089 /sfx2 | |
parent | e4c912f6b0855d3f0cf713cb4e4ecdb00a28e263 (diff) |
TSCP: support abbreviated classification names
Change-Id: Ib7edc491d2f8a69c48f1515ba29d79e09c88c3b7
Reviewed-on: https://gerrit.libreoffice.org/43627
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/classification/baf.xsd | 1 | ||||
-rw-r--r-- | sfx2/classification/example.xml | 8 | ||||
-rw-r--r-- | sfx2/source/view/classificationhelper.cxx | 24 |
3 files changed, 28 insertions, 5 deletions
diff --git a/sfx2/classification/baf.xsd b/sfx2/classification/baf.xsd index a0bae6cc9ff1..abf003b38624 100644 --- a/sfx2/classification/baf.xsd +++ b/sfx2/classification/baf.xsd @@ -68,6 +68,7 @@ </xs:sequence> <xs:attribute name="Identifier" type="xs:anyURI" use="required"/> <xs:attribute name="Name" type="xs:string" use="optional"/> + <xs:attribute name="loextAbbreviatedName" type="xs:string" use="optional"/> </xs:complexType> </xs:element> <!-- Impact Level --> diff --git a/sfx2/classification/example.xml b/sfx2/classification/example.xml index 82098031ff91..a5065e3d959a 100644 --- a/sfx2/classification/example.xml +++ b/sfx2/classification/example.xml @@ -9,7 +9,7 @@ </baf:AdministrativeData> <baf:Included> <!-- Translators: the Name attribute in this string can be localized --> - <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:non-business" Name="Non-Business"> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:non-business" Name="Non-Business" loextAbbreviatedName="NB"> <baf:LabelingRules/> <baf:ImpactLevel> <baf:Scale>UK-Cabinet</baf:Scale> @@ -17,7 +17,7 @@ </baf:ImpactLevel> </baf:BusinessAuthorizationCategory> <!-- Translators: the Name attribute in this string can be localized --> - <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:general-business" Name="General Business"> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:general-business" Name="General Business" loextAbbreviatedName="GB"> <baf:LabelingRules> <baf:VisualMarkingPart> <baf:Identifier>Document: Header</baf:Identifier> @@ -31,7 +31,7 @@ </baf:ImpactLevel> </baf:BusinessAuthorizationCategory> <!-- Translators: the Name attribute in this string can be localized --> - <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:confidential" Name="Confidential"> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:confidential" Name="Confidential" loextAbbreviatedName="Conf"> <baf:LabelingRules> <baf:VisualMarkingPart> <baf:Identifier>Document: Header</baf:Identifier> @@ -55,7 +55,7 @@ </baf:ImpactLevel> </baf:BusinessAuthorizationCategory> <!-- Translators: the Name attribute in this string can be localized --> - <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:internal-only" Name="Internal Only"> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:internal-only" Name="Internal Only" loextAbbreviatedName="IO"> <baf:LabelingRules> <baf:VisualMarkingPart> <baf:Identifier>Document: Header</baf:Identifier> diff --git a/sfx2/source/view/classificationhelper.cxx b/sfx2/source/view/classificationhelper.cxx index 3378ed0df239..77932f4fb260 100644 --- a/sfx2/source/view/classificationhelper.cxx +++ b/sfx2/source/view/classificationhelper.cxx @@ -92,6 +92,7 @@ class SfxClassificationCategory public: /// PROP_BACNAME() is stored separately for easier lookup. OUString m_aName; + OUString m_aAbbreviatedName; std::map<OUString, OUString> m_aLabels; }; @@ -170,7 +171,8 @@ void SAL_CALL SfxClassificationParser::startElement(const OUString& rName, const } else if (rName == "baf:BusinessAuthorizationCategory") { - OUString aName = xAttribs->getValueByName("Name"); + const OUString aName = xAttribs->getValueByName("Name"); + const OUString aAbbreviatedName = xAttribs->getValueByName("loextAbbreviatedName"); if (!m_pCategory && !aName.isEmpty()) { OUString aIdentifier = xAttribs->getValueByName("Identifier"); @@ -179,6 +181,8 @@ void SAL_CALL SfxClassificationParser::startElement(const OUString& rName, const m_aCategories.emplace_back(SfxClassificationCategory()); SfxClassificationCategory& rCategory = m_aCategories.back(); rCategory.m_aName = aName; + // Set the abbreviated name, if any, otherwise fallback on the full name. + rCategory.m_aAbbreviatedName = !aAbbreviatedName.isEmpty() ? aAbbreviatedName : aName; rCategory.m_aLabels["PolicyAuthority:Name"] = m_aPolicyAuthorityName; rCategory.m_aLabels["Policy:Name"] = m_aPolicyName; rCategory.m_aLabels["BusinessAuthorization:Identifier"] = m_aProgramID; @@ -587,6 +591,11 @@ const OUString& SfxClassificationHelper::GetBACName(SfxClassificationPolicyType return m_pImpl->m_aCategory[eType].m_aName; } +const OUString& SfxClassificationHelper::GetAbbreviatedBACName(SfxClassificationPolicyType eType) +{ + return m_pImpl->m_aCategory[eType].m_aAbbreviatedName; +} + bool SfxClassificationHelper::HasImpactLevel() { auto itCategory = m_pImpl->m_aCategory.find(SfxClassificationPolicyType::IntellectualProperty); @@ -754,6 +763,19 @@ std::vector<OUString> SfxClassificationHelper::GetBACNames() return aRet; } +std::vector<OUString> SfxClassificationHelper::GetAbbreviatedBACNames() +{ + if (m_pImpl->m_aCategories.empty()) + m_pImpl->parsePolicy(); + + std::vector<OUString> aRet; + std::transform(m_pImpl->m_aCategories.begin(), m_pImpl->m_aCategories.end(), std::back_inserter(aRet), [](const SfxClassificationCategory& rCategory) + { + return rCategory.m_aAbbreviatedName; + }); + return aRet; +} + void SfxClassificationHelper::SetBACName(const OUString& rName, SfxClassificationPolicyType eType) { if (m_pImpl->m_aCategories.empty()) |