summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorAshod Nakashian <ashod.nakashian@collabora.co.uk>2017-10-18 13:09:59 +0400
committerAshod Nakashian <ashnakash@gmail.com>2017-10-22 07:12:48 +0200
commitdb61ca5b3abbd2df433bcab516f8fa2cfbc01944 (patch)
tree28a09d8a15c749284900dca91444bf0aebb02089 /sfx2
parente4c912f6b0855d3f0cf713cb4e4ecdb00a28e263 (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.xsd1
-rw-r--r--sfx2/classification/example.xml8
-rw-r--r--sfx2/source/view/classificationhelper.cxx24
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())