U.S. patent application number 14/936335 was filed with the patent office on 2016-03-03 for document classification toolbar.
The applicant listed for this patent is TITUS, INC.. Invention is credited to Charles E. Pulfer, Brad P. Smith, Tim J. Upton.
Application Number | 20160063130 14/936335 |
Document ID | / |
Family ID | 39331620 |
Filed Date | 2016-03-03 |
United States Patent
Application |
20160063130 |
Kind Code |
A1 |
Pulfer; Charles E. ; et
al. |
March 3, 2016 |
DOCUMENT CLASSIFICATION TOOLBAR
Abstract
Electronic document classification is disclosed. A toolbar adds
the ability to classify documents based on specific properties such
as security classification, information type, document type,
document retention, document caveats, and the like associated. The
toolbar through dropdown selections allows users to select the
appropriate classification and properties based upon the content of
the document and have appropriate classifiers added to the
document. Document classification properties are generated that are
associated with the document in the document properties and by
inserting visual markings that allow users to quickly identify the
security, sensitivity, intended distribution or retention. By
utilizing the classification toolbar a user can classify an
document by one or more classification levels and be ensured that
the classification will be visible to any person viewing the
document.
Inventors: |
Pulfer; Charles E.;
(Ontario, CA) ; Smith; Brad P.; (Merrickville,
CA) ; Upton; Tim J.; (Ottawa, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
TITUS, INC. |
Ottawa |
|
CA |
|
|
Family ID: |
39331620 |
Appl. No.: |
14/936335 |
Filed: |
November 9, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13236374 |
Sep 19, 2011 |
9183289 |
|
|
14936335 |
|
|
|
|
11877616 |
Oct 23, 2007 |
8024304 |
|
|
13236374 |
|
|
|
|
60863067 |
Oct 26, 2006 |
|
|
|
Current U.S.
Class: |
715/234 |
Current CPC
Class: |
G06F 16/285 20190101;
G06F 16/38 20190101; G06F 40/169 20200101; G06F 40/109 20200101;
G06F 16/986 20190101; G06F 16/93 20190101; G06F 3/0482
20130101 |
International
Class: |
G06F 17/30 20060101
G06F017/30; G06F 17/21 20060101 G06F017/21; G06F 3/0482 20060101
G06F003/0482 |
Claims
1. A method for document classification in a document creation
application comprising the steps: providing a classification
toolbar within a document in the document creation application, the
classification toolbar providing at least a first classification
selection input; populating classification selections in the
classification toolbar based upon pre-defined classification
criteria; receiving a classification selection input, selected by a
user, from the classification selections populated in the toolbar;
determining if classification input is valid based upon
administrator defined classification policy; applying visual cues
to the document to identify that the document has been classified;
and assigning XML classification properties to the document
metadata based upon the classification selections when the
classification input is valid.
2. The method of claim 1 wherein the classification toolbar is
generated by a COM API interface.
3. The method of claim 2 wherein the toolbar is provided by a
Microsoft Office 2007 ribbon bar and task pane.
4. The method of claim 1 wherein the visual cues are font
characteristics.
5. The method of claim 1 further comprising the steps of:
determining if an additional classification is required based upon
the previous classification input; and dynamically changing the
toolbar in order to prompt for additional classification selection
input, selected by the user, from the toolbar.
6. The method of claim 1 further comprising: receiving
identification of a selected portion of the document from the user;
receiving a portion classification selection input, selected by the
user, from the classification selections populated in the toolbar;
determining if the portion classification input is valid based upon
administrator defined classification policy; applying portion
classification visual markings and visual cues associated with the
selected portion classification when the classification input is
valid; and applying XML properties within the document representing
the classification of the portions.
7. The method of claim 6 further comprising the steps of:
determining if an additional classification is required based upon
the previous classification input; and dynamically changing the
toolbar in order to prompt for additional classification selection
input, selected by the user, from the toolbar.
8. The method of claim 7 further comprising; comparing selected
portion classifications to current document classifications; and
updating classification properties of document metadata when the
selected portion classification are higher than the current
document classifications.
9. The method of claim 1 wherein the pre-defined criteria are
defined relative to one or more security levels, sensitivity
levels, intended distribution groups or retention level.
10. The method of claim 1 wherein the visual cues comprises
inserting a classification identifier into a body of the
document.
11. The method of claim 10 wherein the visual cues are inserted in
header and footer of the document.
12. The method of claim 11 wherein visual cues are inserted as a
watermark in the document.
13. The method of claim 1 further comprising the step of logging
all classification actions taken by a user in a classification
information database.
14. The method of claim 1 further comprising the step of forcing
the user to select classification properties before a document is
stored, printed, or transmitted.
15. The method of claim 1 further comprising the step of verifying
that the classification property in a document has not been
tampered with by comparing a hash code, computed relative document
properties (word count, pages etc) and the classification
properties, when the document is saved, and the next time the
document is opened.
16. The method of claim 1 where in the step of populating
classification selections comprises retrieving classification
properties previously associated with the document and populating
the toolbar classification criteria based upon the retrieved
classification properties.
17. A method for document classification in a document creation
application comprising the steps: providing a classification
toolbar within the document, the classification toolbar providing
at least a first classification selection input; populating
classification selections in the classification toolbar based upon
pre-defined classification criteria; receiving identification of a
selected text portion of the document from a user; receiving a
portion classification selection input, selected by the user, from
the classification selections populated in the toolbar; determining
if portion classification input is valid based upon administrator
defined classification policy; applying visual cues to the document
to identify a portion of the document has been classified; applying
visual markers identifying the selected classification at the
beginning and end of the portion that has been classified; and
applying XML properties within the document representing the
classification of the portions.
18. The method of claim 17 wherein the classification toolbar is
generated by a COM API interface.
19. The method of claim 17 wherein the visual cues are font
characteristics.
20. The method of claim 17 wherein the visual markers comprises
inserting pre-defined text associated with the selected
classification selection.
21. The method of claim 17 further comprising the steps of;
comparing selected portion classifications to current document
classifications; and assigning classification properties to the
document metadata if the selected portion classification are higher
than the current document classifications.
22. The method of claim 21 wherein classification toolbar is
provided by a Microsoft Office 2007 ribbon bar and task.
23. A computer readable medium containing instructions for
providing document classification in a document creation
application, the instructions which when executed by a processor
perform the steps of: providing a classification toolbar within a
document in the document creation application, the classification
toolbar providing at least a first classification selection input;
populating classification selections in the classification toolbar
based upon pre-defined classification criteria; receiving a
classification selection input, selected by a user, from the
classification selections populated in the toolbar; determining if
classification input is valid based upon administrator defined
classification policy; applying visual cues to the document to
identify that the document has been classified; and assigning XML
classification properties to the document metadata based upon the
classification selections when the classification input is
valid.
24. A computer readable medium containing instructions for
providing document classification in a document creation
application, the instruction which when executed by a processor
perform the steps of: providing a classification toolbar within the
document, the classification toolbar providing at least a first
classification selection input; populating classification
selections in the classification toolbar based upon pre-defined
classification criteria; receiving identification of a selected
text portion of the document from a user; receiving a portion
classification selection input, selected by the user, from the
classification selections populated in the toolbar; determining if
portion classification input is valid based upon administrator
defined classification policy; applying visual cues to the document
to identify a portion of the document has been classified; applying
visual markers identifying the selected classification at the
beginning and end of the portion that has been classified; and
applying XML properties within the document representing the
classification of the portions.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority from U.S. provisional
application No. 60/863,067 filed Oct. 26, 2006 which is hereby
incorporated by reference.
TECHNICAL FIELD
[0002] The present disclosure relates to computer systems and
software, and in particular to electronic document management and
security using a document classification toolbar.
BACKGROUND
[0003] Electronic documents commonly used in the corporate and
government environments are generated being word processing
applications, spreadsheets, slide presentations, the most common
being Microsoft Office.TM. application suite. With today's
pervasive networking systems such as local area networks (LANs),
wide area networks (WANs) and the Internet, and software tools such
as e-mail, it is very easy for individuals to move these documents
around to different computers, computer systems and other
individuals without little or no thought as to the sensitivity of
the content contained therein. As a matter of security in the
electronic workplace there is therefore a need to classify, manage
and control the creation and flow of documents, e-mail
correspondence and the like.
[0004] Some document management solutions allow the user to
associate classifications to a document when a document is added to
a document management repository governed by document management
systems. These classification properties are stored in the document
library database and are not actually attached to the document
itself and are dependent on the document management system for
identification and enforcement.
[0005] When a document is removed from the document management
repository and sent to or shared with someone, it loses the
associated properties because the properties are not part of the
document. The classification may not also be visible on any printed
copies of the document itself. As a result, the person receiving
the document has no easy way to identify the classification of the
document, and they therefore do not know what limitations should be
placed on the handling and distribution of the document. In
addition, compliance systems verifying the handling or distribution
of the document have no way to decide what to do with the document
as there are no properties attached to the document and potential
contained in the document itself.
[0006] There is therefore a need for an improved classification and
management system for electronic documents.
SUMMARY
[0007] In an aspect there is provided a method for document
classification in a document creation application comprising the
steps: providing a classification toolbar within a document in the
document creation application, the classification toolbar providing
at least a first classification selection input; populating
classification selections in the classification toolbar based upon
pre-defined classification criteria; receiving a classification
selection input, selected by a user, from the classification
selections populated in the toolbar; determining if classification
input is valid based upon administrator defined classification
policy; applying visual cues to the document to identify that the
document has been classified; and assigning XML classification
properties to the document metadata based upon the classification
selections when the classification input is valid.
[0008] In accordance with another aspect there is provided a method
for document classification in a document creation application
comprising the steps: providing a classification toolbar within the
document, the classification toolbar providing at least a first
classification selection input; populating classification
selections in the classification toolbar based upon pre-defined
classification criteria; receiving identification of a selected
text portion of the document from a user; receiving a portion
classification selection input, selected by the user, from the
classification selections populated in the toolbar; determining if
portion classification input is valid based upon administrator
defined classification policy; applying visual cues to the document
to identify a portion of the document has been classified; applying
visual markers identifying the selected classification at the
beginning and end of the portion that has been classified; and
applying XML properties within the document representing the
classification of the portions.
[0009] In accordance with yet another aspect there is provided a
computer readable medium containing instructions for providing
document classification in a document creation application, the
instructions which when executed by a processor perform the steps
of: providing a classification toolbar within a document in the
document creation application, the classification toolbar providing
at least a first classification selection input; populating
classification selections in the classification toolbar based upon
pre-defined classification criteria; receiving a classification
selection input, selected by a user, from the classification
selections populated in the toolbar; determining if classification
input is valid based upon administrator defined classification
policy; applying visual cues to the document to identify that the
document has been classified; and assigning XML classification
properties to the document metadata based upon the classification
selections when the classification input is valid.
[0010] In accordance with still yet another aspect there is
provided a computer readable medium containing instructions for
providing document classification in a document creation
application, the instruction which when executed by a processor
perform the steps of: providing a classification toolbar within the
document, the classification toolbar providing at least a first
classification selection input; populating classification
selections in the classification toolbar based upon pre-defined
classification criteria; receiving identification of a selected
text portion of the document from a user; receiving a portion
classification selection input, selected by the user, from the
classification selections populated in the toolbar; determining if
portion classification input is valid based upon administrator
defined classification policy; applying visual cues to the document
to identify a portion of the document has been classified; applying
visual markers identifying the selected classification at the
beginning and end of the portion that has been classified; and
applying XML properties within the document representing the
classification of the portions.
[0011] Other aspects and features will become apparent to those
ordinarily skilled in the art upon review of the following
description of specific embodiment of the invention in conjunction
with the accompanying figures.
BRIEF DESCRIPTION OF THE DRAWINGS
[0012] Further features and advantages will become apparent from
the following detailed description, taken in combination with the
appended drawings, in which:
[0013] FIG. 1 shows a block diagram of a document classification
system architecture;
[0014] FIG. 2 shows a schematic representation of a high level
client architecture for implementing a document classification
toolbar;
[0015] FIG. 3 shows a classification toolbar providing project
classification;
[0016] FIG. 4 shows a classification toolbar providing
retention;
[0017] FIG. 5 shows document containing classification
criteria;
[0018] FIG. 6 shows document classification metadata
properties;
[0019] FIG. 7 shows a hierarchical tree in a Windows registry;
[0020] FIG. 8 shows a document classification administration
tool;
[0021] FIGS. 9 and 10 show a method for executing a classification
toolbar and generating an document containing classification
properties;
[0022] FIG. 11 shows a method for executing a classification
toolbar for classification marking a portion of a document;
[0023] FIG. 12 shows XML document classification properties;
[0024] FIG. 13 shows a portion of the document of FIG. 5 in XML and
the identifying classification and portion marking; and
[0025] FIG. 14 shows an illustration of dynamic toolbar
population.
[0026] It will be noted that throughout the appended drawings, like
features are identified by like reference numerals.
DETAILED DESCRIPTION
[0027] Embodiments are described below, by way of example only,
with reference to FIGS. 1-14.
[0028] Due to compliance legislation such as the Sarbanes-Oxley Act
in the United States (or more precisely, the Public Company
Accounting Reform and Investor Protection Act of 2002), policies
such as the Health Insurance Portability and Accountability Act
(HIPAA), or other legal or corporate guidelines there is a need for
greater security of information. Companies need to be able to
determine the classification of documents so that their employees
will handle information correctly in terms of privacy, security,
distribution and retention. The best way to do this is to generate
recognizable classification properties and visual markers in the
documents when they are being created so that everyone will know
the level of sensitivity of the documents and how to handle
them.
[0029] By creating classification criteria metadata properties
inserted in a document travel with the document and also allow
automatic processes to check the handling of the document. For
example, a messaging gateway or content scanner can verify the
classification of documents being sent out of the company via
e-mail for any violations of policy. In addition classification
criteria can allow the automatic insertion of to visual cues to
identify the associated classification in a standard manner.
Heretofore, this cannot be done with productivity suites such as
Microsoft.TM. Office software, Adobe.TM. Acrobat, OpenOffice.TM.,
Corel.TM. WordPerfect.TM. Office and Microsoft Visio.TM.. Most
document creation applications allow users to add optional
properties to the document such as Title, Author, Subject, but
cannot force the user to enter any properties before a document is
saved or enforce classification standards. The document
classification system described herein can force the user to select
classification properties to be associated with the document, or
portions therein, in addition to providing visual cues inserted
within the document in standard format to ensure classification
properties are appropriately identified and transmitted. Automatic
insertion of visual markings in document including headers and
footers in addition to advanced formatting capabilities which allow
the user to apply the classification markings to specific areas of
the header and footer (left justified, center, right justified
etc.) to provide a consistent level of visibility not previously
available. Custom properties that are associated with the document
travel with the document and reflect the classification of the
document can be integrated with rights management systems to limit
access and distribution of document based upon the associated
classification.
[0030] Event driven logic is utilized to force user to classify a
documents before saving, sending or printing as described in more
detail below. In addition to providing overall document
classification, portions of the document can be classified at a
different level than the document classification with unique
classification markings associated to clearly identify the selected
portion. All SAVE, PRINT and SEND events are interpreted within the
document productivity software and ensure that classification
selections have been made before these actions. Prevention or
warning can be displayed when the user attempts to downgrade a
classification of a document. In the downgrade prevent mode, if the
user tries to downgrade the classification, for example from SECRET
to UNCLASSIFIED, they can be prevented based upon the existing
properties associated with it. Alternatively the document can be
automatically classified based on the users profile. For example,
all users in the finance department could be configured to
automatically apply a classification of FINANCIAL INFO to all their
documents. Visual markings within the document such as header,
footer or watermarks can be automatically inserted based upon the
selected classification.
[0031] Context sensitive classification selections which change
based on user selection can also be provided by the toolbar. For
example, if the user selects CONFIDENTIAL as a classification they
can then be prompted to indicate which department generated the
confidential information and how long the information should be
retained as a corporate record.
[0032] FIG. 1 provides a high level overview environment in which
classification toolbars can be utilized. A user selects 114
classifications for a document via toolbar extensions to the office
software applications such as Microsoft Word, Excel, PowerPoint or
Adobe Acrobat, etc. executed by computers 108, 110 and 112 having
processors and memory which are operated by users 114, 116 and 118
respectively. The client may be a personal computer, notebook
computer or portable computing device such a mobile phone or
personal digital assistant (PDA) device. In a networked environment
the clients 108, 110, 112 can access a storage or document
management server 104 through a network 102 such as the internet.
The server 104 can provide access to a storage device 106
containing documents. The storage device 106 may also contain
computer readable code required to implement the toolbar on clients
108, 110 and 112. Alternative the computers 108, 110 and 112 may
have local storage for documents and computer executable code.
[0033] Classification selection enables the automatic creation of
properties that will travel with the document and may be enforced
by document classification software either residing on the computer
108, 110, or 112, or by a central server 104. Trusted label support
provides verification that classification of the document has not
been modified (tampered with) which can be done by calculating a
hash of the document properties on saving and recalculating the
hash on re-opening of the document by the software operating on the
client. In addition, the classification policy allows users to
search a network or PC for documents with specific classifications.
Automatic logging may be provided for all classification actions by
the user can be provided which can be used to audit user
compliance. For example all classification warnings, classification
errors, or all classification events (who classified, when
classification properties were assigned, name of document etc) can
be logged and reviewed by an administrator. Digital rights
management policies such as Windows No Print or No Change can also
be applied and controlled.
[0034] FIG. 2 describes the high level client architecture for
implementing document classification toolbar. In this example,
applications such as Word, Excel, PowerPoint, Acrobat applications
202 are implemented in the computing environment. The development
environment in this case is application programming interface (API)
204 such as Component Object Model (COM) programming interface
utilized in Microsoft Office or APIs utilized in Adobe. The end
user interface 206 presents a composition screen or editing
interface. The document classification is built by programming in
the COM programming interface to accommodate a classification
toolbar 208 presented to the user when composing a document. The
toolbar may be implemented in a traditional toolbar approach or in
the ribbon toolbar as provided in Microsoft Office 2007
applications. The classification toolbar 208 can be composed of
several components, some presented to the user while others
components provide additional functionality in regards to the
classification process itself. For example, classification 210
selections may be presented to the user, as will be described in
more detail. Classification policies 212 may be enforced based upon
rules relative to the classification associated with the document,
for example, certain classifications may limit who the has
privileges to access, read, edit, save, print the document. Visual
markings 214 may also be included in the document based on the
classification, as will be discussed in more detail below, and
events related to changes in classification may be logged 216 for
access by an administrator.
[0035] FIG. 3 shows a document classification toolbar 300 utilized
when creating or editing documents. By selecting classification
criteria via the toolbar, users can assign visual markers to the
document in addition to assigning classification properties. The
classification toolbar 300 is added to the application in which the
document is being edited to enable the user to select
classifications to be associated with the document or portions of
the document therein. In this example first level classification
criteria entry menu 302 and a secondary classification criteria
menu defining project 306 classifications are provided. In the
classification menu 302, classifications criteria 304 such as for
example a Sensitivity or Security level such as Unclassified,
Confidential, Restricted, Internal Use Only, Secret, etc. can be
selected by the user. Other levels of classification can be
introduced such as secondary classification 306 to indicate the
appropriate project 308 or department name such as Sales Strategy,
Sales Forecast, Sales Plan, etc. or distribution such as Executive
Only, Senior Managers only etc. and the like. Any type of
classification category can be utilized including but not limited
to project, case number, file number, patient number, customer
number, program name or number, etc.
[0036] The collection of classification properties can be context
sensitive and the selections are configurable. For example, if the
user selects Confidential as the security classification, they
could then be prompted for a retention property or a distribution
property. On the other hand, if the user selects Unclassified as
the document type, there would be no need to collect any other
classification properties. As an example, the classification
collection logic could be implemented as follows:
TABLE-US-00001 IF First Level Selection is CONFIDENTIAL THEN
DISPLAY Second Level RETENTION selection ELSE NO MORE
CLASSIFICATIONS
[0037] This example can be extended to many levels of
classification allowing the organizations to collect many
classification properties for each document. The toolbar is built
dynamically based on the user selections. As an example of a
possible configuration, if the user selected a sensitivity of
PERSONAL, no other selections are necessary. If the user selects a
sensitivity of COMPANY CONFIDENTIAL the toolbar is dynamically
configured to further prompt the user for the allowed distribution
of the document (e.g. LEGAL DEPT ONLY). In this way the toolbar can
expand as the user is entering the classification information. Only
subsequent classification criteria associated with the first
selection is dynamically presented in the toolbar as will be
discussed in connection with FIG. 14.
[0038] FIG. 4 shows classification toolbar 400 in which the first
classification 402 is related to the security of the document while
the second classification selection 404 defines the retention
policy to be associated with the document. For example the document
may have a retention-based model to classify the information to
enforce retention with labels such as Personal, Retain for 90 days,
Retain for 1 Year, or Corporate Correspondence. After
classifications are assigned to the document, the document can be
saved. Third party archiving and retention systems utilized the
classification selection to determine if or how to retain a
corporate document based on the Retention property assigned.
[0039] It should be understood that although on two classification
criteria are shown each in FIGS. 3 and 4, a toolbar may present
multiple classification criteria for selection by the user.
[0040] FIG. 5 shows a word processing application 500, in this
example Microsoft Word containing document 520 is shown utilizing a
ribbon toolbar presentation. Toolbar 502 extends vertically within
the application presenting the classification criteria to be
selected by the user and applied to the document in contrast to the
horizontal toolbar for FIGS. 3 & 4. The toolbar 502 presents a
security classification criteria menu 504, a `caveat` criteria menu
506, a `derived` from menu 508 and an additional field 510 for
entry of the classifying user. The classification criteria, as they
are selected, can result in the application of visual cues to the
text and images contained in the document 520. In this example, a
header 522 is added which identifies the selected classification
criteria. In addition, the classification scheme associated with
the selected classification can add a watermark to the document
524, which in this example identifies the document as "SECRET".
Automatic insertion of the author's user name in the document
watermark can also be provided based upon the currently logged on
user's name can be retrieved from the operating system and inserted
into the document watermark.
[0041] Context sensitive text such as disclaimers can be added
within the document body or within the header of footer portions.
These disclaimers can be intelligently added to be tailored to the
classification of the document and the associated content. For
example, if UNCLASSIFIED was the selected classification the
following text could be appended "This document is the property of
XXX Corp. If you are not the intended recipient of the document
please notify the originator", whereas a different posffix such as
"This document has been marked as Confidential to XXX Corp.
Unauthorized reproduction or transmission of the document is
prohibited" if the classification selected was CONFIDENTIAL. Visual
cues such as font characteristics can also be used in the added
text for instance color, special fonts, font size, or formatting
(table etc) can all be applied to text.
[0042] Portions of the document content may also be classified
independently of the overall document, however when a portion
classification is selected which is higher then the document
selection, the document properties may be upgraded to match the
selection, such as for example a security or sensitivity related
criteria. In document 520, paragraph 526 is selected by the user
for individual classification. By making selections using toolbar
502, visual cues 528 and 530 can be added within the document to
clearly identify the associate classification criteria. In this
example a classification of SECRET has been selected and a caveat
RelToUSA_CAN which is not the same as the current selected document
caveat ReIToNATO. The classification markings for portions are
represented within the document as Extensible Markup Language (XML)
properties of the document as shown in FIG. 13. In the case or
Microsoft Word, for example, the base XML version of the document
is modified with custom classification properties which represent
the classification portion markings and the overall document
classification. The markings may be custom to the application or
organization or may be defined as per the Intelligence Community
Classification and Control Markings Manual also known as the CAPCO
Guide.
[0043] High level functions are available to the user when
composing a document through operation of the toolbar. These
functions are also available if the user wants to apply
classification information to an opened document that currently has
no classification properties, or an opened document that already
has assigned classifications. Classification selection can be
forced on Save, Exit or Print from a pop-up dialog rather than
presenting a classification toolbar. In addition a downgrade
warning for preventing downgrades when Saving or Printing can also
be provided. Although a word processing document is shown should be
understood that the application of the classification criteria is
equally applicable to any form of document, including but not
limited to Microsoft Word.TM., Excel.TM. and PowerPoint.TM.
formats. Any document creation product can be utilized which do not
currently allow classification of documents.
[0044] FIG. 6 shows an example of document classification
properties 600 inserted into document metadata. Document
classification information can be added to documents generated by
office productivity applications based on document-specific
classification criteria properties. In this example under the
document properties a custom label is created. The properties
section 602 can define the classification criteria 604. Current
document management systems do not modify the document in any way,
as a result there are no visual markings in the document when it is
opened in an application, that would identify the classification
properties. Without visual markings the user has no easy way of
identifying the classification of the document. The classification
properties can be stored with the document properties provided in
document metadata which may also be stored as XML properties in the
document instead as Microsoft Office custom properties, as shown in
FIG. 12. Trusted label support can also be utilized in generating
the classification properties by providing verification that the
classification of the document has not been modified (tampered
with) since document was saved. This is accomplished by computing a
hash based on document properties as the document is being saved,
and then re-computing the hash for comparison when the document is
re-opened. The Microsoft CAPI encryption algorithms can be used to
generate a hash which is used to verify the authenticity of the
classification properties when the document is opened.
[0045] FIG. 7 presents a screen capture of an exemplary
hierarchical tree in a Windows Registry 700. Each Microsoft Office
product supports the insertion of header/footer objects
differently. Microsoft Word allows the insertion of a header and a
footer, in PowerPoint only footers are supported and in Excel
header/footers are only visible on print. The registry entries 704
defined for each application enable an administrator to enter their
requirements, but also result in a setup which is feasible for each
product. The method used to implement this is a Windows registry
tree which accommodates different settings for Word, Excel and
PowerPoint. The entries 706 defines the behaviour of the toolbar
within the application and how the classification criteria are
applied to the document itself.
[0046] The classification toolbar can also provide built-in
integration for users of the Microsoft Windows Rights Management
Services (RMS) platform. Administrators can define associated RMS
permissions such as Read, Full Control, Printing, Copy and Paste,
and document expiration based on the classification label chosen.
The RMS permissions or templates are defined within the Microsoft
RMS Administration tool. Once these RMS permissions are defined
they can be associated with classification criteria. This is done
via Windows registry settings that indicate to the document
classification toolbar if RMS protection should be automatically
assigned based on a classification selection by the user. If RMS
protection is to be applied, then another Windows registry would be
used to indicate what protection should be assigned for each
classification. As an example, a presentation assigned an HR ONLY
label could be automatically assigned RMS permissions that would
not allow anyone outside the HR department to view the
presentation. The Document Classification Administration tool sets
the correct Windows Registry settings based on the configuration
selected by the administrator. These settings can then be applied
to user desktops using scripts or Microsoft Group Policy.
[0047] FIG. 8 shows an classification administration tool window
800. The classification levels 802 of the toolbar are defined by
selecting a specific level and associating criteria or tags 804
with the level. A toolbar label 806 can then be associated with the
level in addition to a visual tooltip 808. Each level can be
defined independently or be conditional on the previous level.
Default selection can also be applied to enforce specific document
attributes and visual markings. The administration tool also allows
the administrator to predefine all possible classification
selections and allows for automatic policy enforcement based on the
classifications selected by the user. For instance the document
could be automatically encrypted & protected using third party
encryption schemes, such as digital rights management protection.
Automatic logging of all classification actions by the user, which
can be used to audit user compliance. The software can be
configured to log all classification warnings, classification
errors, or all classification events (who classified, when,
classification properties assigned, name of document etc). The
software writes this log information to the user's local Windows
Event Log in a special folder. The administrator can perform the
following actions: customize the list of labels you want to use;
administrator can define default labels; define if/when the
label(s) will appear in the presentation footer; define if/when the
label(s) will appear in the presentation notes header/footer; force
the user to make an explicit selection of a label before saving or
printing the presentation; and turn on the trusted labels feature
to ensure classification integrity.
[0048] Administrator defined settings are captured in the
configuration file which is the central source of configuration
information. The configuration file may be local on the computer
108, 110 and 112 or be provided by the document server 104. This
enables customization of the list of labels for classification;
ability for administrator to configure warnings or prevent users
from downgrading classifications; ability for administrator
configuration to apply different customized headers, footers and
watermarks depending on the classification selected; administrator
can define default labels; define if/when the label(s) will appear
in the document title or file name; define the formatting and color
of any visual marking text within the document such as the header
or footer portions; define if/when the label(s) will appear
including the ability to display abbreviations of the
classifications; force the user to make an explicit selection of a
label before saving; and sort and search a PC's or network's
document database based on the document's classification.
[0049] FIGS. 9 and 10 show a method for executing a classification
toolbar and generating an document containing classification
properties. At step 902 a user creates or opens a document using a
productivity application. The document may be opened/created within
an application or selected outside of the application in the
operating system interface thus invoking the application to
executed at step 904. At step 906 the classification toolbar is
presented within the document. Based upon the defined
administration policy of the classification the toolbar can then be
populated with classification selection (for example function
COffice Document:Enable Command Bar) at step 908. As previously
noted the toolbar may alternatively only be presented at the end of
the document creation process. The population criteria may be a
default setting or may utilize existing classification settings
previously associated with the document. The user can then select a
first classification level at step 910 (for example function Set
Dropdown Selection). If multiple classification level policies are
implemented, YES at step 912, the next menu selection can then be
made available at step 910. The selection of the next level of
classification may be related to the previous level of
classification selected, for example each selection in the first
level may have a different subset of selections available in the
second or subsequent levels. If no more classification levels are
required, NO at step 912, the input is validated at step 914.
Validation may be performed by the server or based upon rules
contained within the client or done locally based on the
administration policy. If the input is valid, YES at 914, as shown
in FIG. 10, it is determined if classifications are assigned at
step 1002. If no classification are assigned, NO at step 1002, step
910 is re-executed to require user input. If the classifications
are assigned, YES at step 1002 the associated visual cues are added
to the document at step 1004 and the document classification
properties can be applied at step 1004. The document can then be
saved, printed or transmitted with the classification.
[0050] FIG. 11 shows a method for executing a classification
toolbar for classification marking a portion of a document. At step
1102 a user selects to classify a portion of document content, such
as a sentence, paragraph, or an image for classification marking.
It is assumed that the toolbar is already present, but it may be
invoked if it is already not available. The population criteria may
be a default setting or may utilize existing classification
settings associated with the document, if previously defined. The
user can then select a first classification level at step 1104 (for
example function COffice Document:Enable Command Bar). If multiple
classification level policies are implemented, YES at step 1106,
the next menu selection can then be made available at step 1104.
The selection of the next level of classification may be related to
the previous level of classification selected, for example each
selection in the first level may have a different subset of
selections available in the second or subsequent levels. If no more
classification levels are required, NO at step 1106, the input is
validated at step 1108. Validation may be performed by the server
or based upon rules contained within the client or done locally
based on the administration policy. If the input is valid, YES at
1108, the associated visual cues and visual markings, such as
specific graphics or icons, are added to the selection portion at
step 1110. At this step XML properties representing the
classification selections are written into the XML representation
of the document. It is then determined if the selection impacts the
overall document classification at step 1112. If the selected
portion classification is higher than the document classification,
then the document classification properties will also be updated to
reflect the change, YES at step 1112. The document properties are
then updated at step 1114. The document can then be saved, printed
or transmitted at step 1116. If the classification does not impact
the overall document classification, NO at step 1112, then the
document can then be saved, printed or transmitted with the
classification criteria at step 1116. At step 1114 the overall
document visual cues of the document may also have to be updated if
the classification criteria selected impact the overall document
classification. For example, if the document was original
UNCLASSIFIED and a portion of text was identified as SECRET, the
overall document classification would be upgraded to SECRET.
[0051] FIG. 12 shows XML document classification properties 1200 as
represented in XML in a Microsoft Word 2007 document. The
classification properties are written to the custom properties file
within the Microsoft Word 2007 Word XML representation (docx file).
As an example, this document has a Caveat property
(TitusCorpidCaveat) 1202 of ReltoNATO (Release to NATO). All of
these classification properties are accessible to outside programs
via normal XML programming tools.
[0052] FIG. 13 shows a portion of the document 1300 of FIG. 5 in
XML and the identifying classification and portion marking. The
portion classification markings are written to the document.xml
file that is part of the XML representation of a Microsoft Word
2007 document (docx file). The custom XML inserted as a result of
portion classification starts at the line that says CustomXML 1302.
A custom XML schema representing the classification properties has
been added to the base schema implemented by Microsoft for Word
2007 documents. In this example the user has classified the text
"This paragraph will be classified" 1304. The text corresponds to
what is currently in FIG. 5, section 526. Within this property you
can see the actual text that has been portioned marked. The custom
XML indicates that this portion has been classified as SECRET and
ReltoUSA_CAN (Release to USA and Canada). Using XML to represent
classification of portions means they are accessible to outside
programs via normal XML programming tools. As an example it would
be easy to write a document redaction tool which would redact a
document based on the XML portion classifications.
[0053] FIG. 14 shows an illustration of dynamic toolbar population
based on user classification selection. Toolbar 1400 shows a first
classification selection 1402 of UNCLASSIFIED. Based upon the
selected classification the second classification criteria 1404 is
populated with the criteria selection and entries associated with
the first classification. In this example the UNCLASSIFIED
selection results in the dynamic selection only one additional
classification property of `Document Status` and the associated
entries. In contrast, in toolbar 1410, if the first classification
criteria 1412 is selected to be SECRET, the three additional
classification criteria are dynamically generated. The secondary
classification criteria 1414 is a `Caveat` selection property;
third classification criteria 1416 in this case entitled `Derived
From`; and fourth classification criteria 1418 entitled `Classified
By`. In addition to independent field 1420 entitled document
status, which may be tied back to the original SECRET
classification and not dependent on the remaining classification
selections. Each of the subsequent criteria may have dependent
classification criteria that are dynamically generated based upon
the user selections.
[0054] The following logic describes some example modules in the
software and the methods associated with those modules. It also
describes the events associated with each module. The
COfficeDocument module contains the following methods:
[0055] i. AddHeaderFooter
[0056] ii. BuildPropertyString
[0057] iii. CalcDropdownWidths
[0058] iv. CheckDowngrade
[0059] v. Cleanup
[0060] vi. CreateCommandBar
[0061] vii. CreateHash
[0062] viii. EnableCommandBar
[0063] ix. EnableSecondLevel
[0064] x. ExtractFromSig nature
[0065] xi. GetClassificationList
[0066] xii. GetDropdownSelections
[0067] xiii. GetProperty
[0068] xiv. GetSignatureShape
[0069] xv. HasClassifications
[0070] xvi. HashProperties
[0071] xvii. HasSignature
[0072] xviii. HasValidProperties
[0073] xix. HasValidPropertiesHashed
[0074] xx. Initialize
[0075] xxi. InsertFieldCode
[0076] xxii. InsertSignature
[0077] xxiii. InsertTitusTemplate
[0078] xxiv. Invoke
[0079] xxv. ProcessCommand
[0080] xxvi. ReadBuiltlnProperty
[0081] xxvii. ReadSignature
[0082] xxviii. SelectClassifications
[0083] xxix. SetDropdownSelections
[0084] xxx. SetHeader
[0085] xxxi. SetRMSPermission
[0086] xxxii. SetWatermark
[0087] xxxiii. UpdateClassifications
[0088] xxxiv. UpdateHeaderFooter
[0089] xxxv. ValidClassifications
[0090] xxxvi. WriteClassifications
[0091] The CClassificationList module contains the following
methods:
[0092] xxxvii. Read ClassificationsFromDocument
[0093] xxxviii. WriteClassificationsToDocument
[0094] xxxix. WritePlaceholdersToDocument
[0095] The CWordApplicationEventhandler module contains the
following methods:
[0096] xl. AddOfficeDocument
[0097] xli. Cleanup
[0098] xlii. CleanupStrayDocuments
[0099] xliii. CreateHelpAbout
[0100] xliv. FindOfficeDocument
[0101] xlv. Initialize
[0102] xlvi. Invoke
[0103] xlvii. ProcessCommand
[0104] The following provide more detail on the actual methods:
[0105] i. bool COfficeDocument::AddHeaderFooter(Word::RangePtr
pRange, bool fInsert)
[0106] Summary: Adds text to a header/footer
[0107] Parameter pRange: Range to add too
[0108] Parameter fInsert: Can we insert into the document
[0109] Returns: Success of adding text
[0110] Determine if any of the fields in the range match the value
for the first property or match the value for the second
property
[0111] For all fields in range [0112] If the value for the first
property was not found and we can insert [0113] Call
InsertFieldCode [0114] If the value for the second property was not
found and we can insert [0115] Call InsertFieldCode
[0116] ii. std::string
[0117] COfficeDocument::BuildPropertyString(Word::_DocumentPtr
pDocument)
[0118] Summary: Combine statistics from document and
classifications into one string
[0119] Parameter pDocument: Document to get properties from
[0120] Returns: String containing the properties
[0121] iii. void COfficeDocument::CalcDropdownWidths( )
[0122] Summary: Calculate the width for each dropdown
[0123] iv. bool COfficeDocument::CheckDowngrade( )
[0124] Summary: Determines if the classification level is okay in
terms of downgrade
[0125] Returns: True if the save is allowed
[0126] If classification downgrade has occurred [0127] Show warn or
prevent message to user [0128] If downgrading document is okay
[0129] Prevent future warnings from displaying [0130] Return true
[0131] Else [0132] Return false
[0133] v. void COfficeDocument::Cleanup( )
[0134] Summary: Cleanup the commandbar
[0135] vi. void COfficeDocument::CreateCommandBar(bool
fTampered)
[0136] Summary: Set up our custom toolbar
[0137] Parameter fTampered: Has the document been tampered with
[0138] Calls GetClassificationList
[0139] Adds a new toolbar
[0140] Adds the dropdowns to our toolbar
[0141] Calls EnableCommandBar
[0142] Calls GetDropdownSelections
[0143] Calls WriteClassifications
[0144] vii. bool COfficeDocument::CreateHash(std::string strData,
std::string& strHashedData)
[0145] Summary: Creates a hash of the data
[0146] Parameter strData: Data to hash
[0147] Parameter strHashedData: Hash of data
[0148] Returns: Hash creation success
[0149] Use the Crypt API to create a hash of the data
[0150] viii. bool COfficeDocument::EnableCommandBar(bool
fEnable)
[0151] Summary: Enable or disable our command bar
[0152] Parameter fEnable: Enable CommandBar
[0153] Returns: True if CommmandBar enabled
[0154] Calls SetDropdownSelections
[0155] Enables or Disables CommandBar
[0156] Calls EnableSecondLevel
[0157] ix. void COfficeDocument::EnableSecondLevel(bool
bFirstEnabled)
[0158] Summary: Enables second Level Dropdown
[0159] Parameter bFirstEnabled: Enabled second level
[0160] x. std::string
COfficeDocument::ExtractFromSignature(std::string strSignature,
std::string strName)
[0161] Summary: Extracts a value of a name-value pair from the
signature
[0162] Parameter strSignature: Signature to extract from
[0163] Parameter strName: Name of name-value pair to extract
[0164] Returns: Value of name-value pair to extract
[0165] xi. CClassificationList*
COfficeDocument::GetClassificationList(bool fTampered)
[0166] Summary: Returns the classification list
[0167] Parameter fTampered: Has the document been tampered with
[0168] Returns: Classification list
[0169] If we have previously set the classification list [0170]
return that classification list
[0171] Else [0172] Create new classification list [0173] If
document has not been tampered with [0174] Call
ReadClassificationsFromDocument [0175] return the new
classification list
[0176] xii. bool COfficeDocument::GetDropdownSelections( )
[0177] Summary: Retrieve the dropdown selections from the
toolbar
[0178] Returns: If dropdown selection has changes since we last
checked
[0179] Calls GetClassificationList
[0180] Get the selection for each dropdown
[0181] xiii. STDMETHODIMP COfficeDocument::GetProperty(LPDISPATCH
pDisp, LPOLESTR pszName, VARIANT* pvResult)
[0182] Summary: Retrieve a named property from the document
[0183] Parameter pDisp: Object to get property from
[0184] Parameter pszName: Name of property
[0185] Parameter pvResult: Value of property
[0186] Returns: Success
[0187] xiv. Word::ShapePtr COfficeDocument::GetSignatureShape
(Word::_DocumentPtr pDocument, bool fCreateNew)
[0188] Summary: Returns the signature shape that matches our
signature name from the document
[0189] Parameter pDocument: Document to get signature shape
from
[0190] Parameter fCreateNew: Create a new shape if requested
[0191] Returns: The signature shape
[0192] Match all shape names against our signature name
[0193] If a match is found [0194] return the match
[0195] Else [0196] If we can create a new shape [0197] Add a label
to the document with the signature name
[0198] xv. bool COfficeDocument::
HasClassifications(Word::_DocumentPtr pDocument)
[0199] Summary: Determines if the document has classifications
[0200] Parameter pDocument: Document to check
[0201] Returns: True if the document has classifications
[0202] Calls ReadClassificationsFromDocument
[0203] xvi. boo; COfficeDocument::HashProperties(Word::_DocumentPtr
pDocument)
[0204] Summary: Creates a signature of the document properties
[0205] Parameter pDocument: Document to get properties from
[0206] Returns: Success of creating hash
[0207] Calls Build PropertyString
[0208] Calls CreateHash
[0209] Calls InsertSignature
[0210] xvii. bool COfficeDocument::HasSignature(Word::_DocumentPtr
pDocument)
[0211] Summary: Determines if the document has a signature
[0212] Parameter pDocument: Document to check
[0213] Returns: True is document has a signature
[0214] Calls GetSignatureShape
[0215] xviii. boot COfficeDocument::
HasValidProperties(Word::_DocumentPtr pDocument)
[0216] Summary: Determine if the document has valid properties
[0217] Parameter pDocument: Document to check
[0218] Returns: True if valid Properties
[0219] Return False if we can't find all of our document
properties
[0220] xix. boot COfficeDocument::HasValidPropertiesHashed
(Word::_DocumentPtr pDocument)
[0221] Summary: Determines if the hash in the signature matches the
current document
[0222] Parameter pDocument: Document to check
[0223] Returns: True if signature matches properties of
document
[0224] Calls ReadSignature on document
[0225] Calls ExtractFromSignature on the signature
[0226] Calls BuildPropertyString on document
[0227] Calls CreateHash
[0228] Compares hash from document and hash just created
[0229] xx. void COfficeDocument::Initialize(LPDISPATCH
/*IpDispatch*/)
[0230] Summary: Get the handle to the window for the document
[0231] Parameter IpDispatch: unused
[0232] xxi. bool COfficeDocument::InsertFieldCode(Word::FieldPtr
pField, LPCSTR szName)
[0233] Summary: Insert a new field code using the given property
name
[0234] Parameter pField: Field to insert into
[0235] Parameter szName: Name of document property
[0236] Returns: Success of insertion
[0237] xxii. void
COfficeDocument::InsertSignature(Word::_DocumentPtr pDocument,
std::string strValue)
[0238] Summary: Inserts the text into the signature shape
[0239] Parameter pDocument: Document to insert signature into
[0240] Parameter strValue: Value to put in signature
[0241] Calls GetSignatureShape
[0242] Sets the text of the signature shape
[0243] xxiii. bool COfficeDocument::InsertTitusTemplate( )
[0244] Summary: Insert a Word template into the document
[0245] Returns: True if template inserted
[0246] Open a named word template file (.dot)
[0247] Copy the contents of the template document into the current
document
[0248] xxiv. STDMETHODIMP COfficeDocument::Invoke(DISPID
dispIdMember, REFIID riid, LCID Icid, WORD wFlags, DISPPARAMS*
pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT*
puArgErr)
[0249] Summary: Event handler for COfficeDocument
[0250] Parameter dispIdMember: Event type
[0251] Parameter riid: Interface type
[0252] Parameter Icid: unused
[0253] Parameter wFlags: unused
[0254] Parameter pDispParams: unused
[0255] Parameter pVarResult: unused
[0256] Parameter pExcepInfo: unused
[0257] Parameter puArgErr: unused
[0258] Returns: Success
[0259] New Event: [0260] Set Active to true [0261] Set Active
Window to current document
[0262] Open Event: [0263] Set Active to true [0264] Set Active
Window to current document
[0265] Close Event: [0266] Set Active to false [0267] Unset Active
Window to current document
[0268] xxv. HRESULT COfficeDocument::ProcessCommand(int nControlID,
int nCommand, bool fMakeDirty)
[0269] Summary: Process commands sent from the toolbar
[0270] Parameter nControlID: What control is sending the
command
[0271] Parameter nCommand: unused
[0272] Parameter fMakeDirty: unused
[0273] Returns: Success
[0274] If Control is first level dropdown [0275] Calls
GetDropdownSelections [0276] Calls EnableSecondLevel [0277] Calls
WriteClassifications
[0278] Else If Control is second level dropdown [0279] Calls
GetDropdownSelections [0280] Calls WriteClassifications
[0281] Else if Control is third level button [0282] Calls
SelectClassifications [0283] Calls WriteClassifications
[0284] xxvi. std::string
COfficeDocument::ReadBuiltInProperty(Word::_DocumentPtr pDocument,
std::string strPropertyName)
[0285] Summary: Return a string for the named built in property
[0286] Parameter pDocument: Document to read from
[0287] Parameter strPropertyName: Name of property to read
[0288] Returns: Value of property
[0289] xxvii. std::string
COfficeDocument::ReadSignature(Word::_DocumentPtr pDocument)
[0290] Summary: Gets the text from the signature shape
[0291] Parameter pDocument: Document to read from
[0292] Returns: Text of signature
[0293] Calls GetSignatureShape\
[0294] xxviii. bool COfficeDocument::SelectClassifications( )
[0295] Summary: Shows Select Classification Dialog
[0296] Returns: Classifications set from dialog
[0297] Calls GetClassificationList
[0298] Shows Select Classifications Dialog <<Screenshot of
dialog>>
[0299] xxix. void COfficeDocument::SetDropdownSelections( )
[0300] Summary: Set the selections on each dropdown
[0301] Calls GetClassificationList
[0302] Set the selection for each dropdown
[0303] xxx. void COfficeDocument::SetHeader(bool fInsert)
[0304] Summary: Updates or inserts text in all headers and
footers
[0305] Parameter fInsert: Are we allowed to insert text into the
header if it doesn't exist already
[0306] For all sections of the document
[0307] Calls UpdateHeaderFooter on the PrimaryHeaderRange [0308]
Calls UpdateHeaderFooter on the FirstPageHeaderRange
[0309] Calls UpdateHeaderFooter on the EvenPageHeaderRange [0310]
Calls UpdateHeaderFooter on the PrimaryFooterRange [0311] Calls
UpdateHeaderFooter on the FirstPageFooterRange [0312] Calls
UpdateHeaderFooter on the EvenPageFooterRange [0313] If we can
insert [0314] If header required [0315] Calls AddHeaderFooter on
the PrimaryHeaderRange [0316] Calls AddHeaderFooter on the
FirstPageHeaderRange Calls AddHeaderFooter on the
EvenPageHeaderRange [0317] If footer required [0318] Calls
AddHeaderFooter on the PrimaryFooterRange [0319] Calls
AddHeaderFooter on the FirstPageFooterRange [0320] Calls
AddHeaderFooter on the EvenPageFooterRange
[0321] xxxi. bool COfficeDocument:SetRMSPermission( )
[0322] Summary: Sets the RMS template to be applied to the
document
[0323] Returns: Success
[0324] Get the RMS template associated with the current
classification
[0325] Calls GetProperty passing in "Permission"
[0326] Retrieves current RMS template applied
[0327] If RMS is required [0328] Enable RMS [0329] Apply RMS
template
[0330] Else [0331] If RMS is on [0332] Remove RMS
[0333] If RMS failed [0334] Show RMS failure warn or prevent
message
[0335] xxxii. void COfficeDocument::SetWatermark(std::string
strClassification, bool finsert)
[0336] Summary: Updates or inserts the watermark using the given
classification
[0337] Parameter strClassification: Text to put as the
watermark
[0338] Parameter fInsert: Are we allowed to insert a watermark if
one isn't there
[0339] If the Titus watermark is found by matching the name of the
watermark against a known name [0340] If we require a watermark
[0341] Update the text of the watermark to reflect the current
classification [0342] Else [0343] Delete the watermark from the
document
[0344] Else [0345] If we require a watermark [0346] Insert the
watermark into the document with the text set to the current
classification
[0347] xxxiii. void COfficeDocument::UpdateClassifications(bool
fTampered)
[0348] Summary: Updates the header, footer, watermark, and selected
fields within the document
[0349] Parameter fTampered: Has the document been tampered with
[0350] If the document has not been tampered with [0351] Call
SetWatermark [0352] Call SetHeader
[0353] Update fields in the document that match our property
names
[0354] xxxiv. bool
COfficeDocument::UpdateHeaderFooter(Word::RangePtr& pRange,
bool fInsert)
[0355] Summary: Update a header/footer
[0356] Parameter pRange: Range of a header/footer
[0357] Parameter fInsert: False to hide the text
[0358] Returns: True if update successful
[0359] For all fields in the range of the document [0360] If the
field code text matches the value for the first property [0361]
Change the hidden value and update it [0362] If the field code text
matches the value for the second property [0363] Change the hidden
value and update it
[0364] xxxv. bool COfficeDocument::ValidClassifications( )
[0365] Summary: Determines if all dropdowns that require a
selection have been set
[0366] Returns: True if no dropdown requires a selection
[0367] xxxvi. bool COfficeDocument::WriteClassifications(bool
fAsklfRequired, boot fTampered)
[0368] Summary: Writes classifications to document
[0369] Parameter fAsklfRequired: Ask for classifications if they
are not valid
[0370] Parameter fTampered: Has the document been tampered with
[0371] Returns: True if classifications are valid
[0372] Calls GetClassificationList
[0373] Calls ValidClassifications
[0374] If ForceSelect is on and classifications are not valid
[0375] Calls SelectClassifications [0376] Calls
ValidClassifications
[0377] If the classifications are valid
[0378] Calls WriteClassificationsToDocument
[0379] Calls UpdateClassifications
[0380] xxxvii. short
CClassificationList::ReadClassificationsFromDocument
(Word::_DocumentPtr pDocument)
[0381] Summary: Reads the classifications from the document
[0382] Parameter pDocument: Document to read classifications
from
[0383] Returns: Number of levels
[0384] Get the custom document properties from the document
[0385] Get the value from the named property for the first
level
[0386] Get the value from the named property for the second
level
[0387] Get the value from the named property for the third
level
[0388] xxxviii.short
CClassificationList::WriteClassificationsToDocument
(COfficeDocument* pDocument)
[0389] Summary: Writes classifications into the custom document
properties
[0390] Parameter pDocument: Document to write classification to
[0391] Returns: Zero
[0392] Gets the custom document properties
[0393] Adds or updates the value of the custom document property
with the value of the first dropdown
[0394] Adds or updates the value of the custom document property
with the value of the second dropdown
[0395] Adds or updates the value of the custom document property
with the value of the third level
[0396] xxxix. short
CClassificationList::WritePlaceholdersToDocument(COfficeDocument*
pDocument)
[0397] Summary: Write classifications to document properties
[0398] Parameter pDocument: Document to write to
[0399] Returns: Zero
[0400] Add a custom document property for the first level
[0401] Add a custom document property for the second level
[0402] Add a custom document property for the third level
[0403] xl. COfficeDocument*
CWordApplicationEventHandler::AddOfficeDocument (Word::_DocumentPtr
pDocument, bool fNew, boot fIsE-mail)
[0404] Summary: Add the word document to our collection
[0405] Parameter pDocument: Document to add
[0406] Parameter fNew: Is the document new
[0407] Parameter fIsE-mail: Is the document an e-mail
[0408] Returns: COfficeDocument
[0409] Calls FindOfficeDocument
[0410] If that returns NULL [0411] Calls HasClassifications [0412]
Calls HasValidPropertiesHashed [0413] If those two calls return
true [0414] Calls HasSignature [0415] If that call returns true
[0416] Set tampered to true [0417] Create a new COfficeDocument
[0418] Calls CreateCommandBar [0419] If tampered [0420] Show
Invalid Signature message [0421] If new document and not an e-mail
[0422] Calls InsertTitusTemplate
[0423] xli. void CWordApplicationEventHandler::Cleanup( )
[0424] Summary: Cleanup help command bar
[0425] xlii. void
CWordApplicationEventHandler::CleanupStrayDocuments( )
[0426] Summary: Remove any documents from our collection that we
don't need anymore
[0427] xliii. void CWordApplicationEventHandler::CreateHelpAbout(
)
[0428] Summary: Add a menu item to the Help About menu
[0429] If the menu item is already there delete it
[0430] Add the menu item
[0431] xliv. COfficeDocument*
CWordApplicationEventHandler::FindOfficeDocument
(Word::_DocumentPtr pDocument)
[0432] Summary: Find the document in our collection
[0433] Parameter pDocument: Document to find
[0434] Returns: Document in our collection
[0435] Match the document in our collection with the one passed
in
[0436] If matched [0437] return that document
[0438] Else [0439] return null
[0440] xlv. void
CWordApplicationEventHandler::Initialize(LPDISPATCH
/*IpDispatch*/)
[0441] Summary: Initialize event handler
[0442] Parameter IpDispatch: unused
[0443] Calls CreateHelpAbout
[0444] xlvi. STDMETHODIMP
CWordApplicationEventHandler::Invoke(DISPID dispIdMember, REFIID
riid, LCID Icid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT*
pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
[0445] Summary: Event handler for CWordApplicationEventHandler
[0446] Parameter dispIdMember: Event type
[0447] Parameter riid: Interface type
[0448] Parameter Icid: Unused
[0449] Parameter wFlags: Unused
[0450] Parameter pDispParams: Parameters for event
[0451] Parameter pVarResult: Unused
[0452] Parameter pExcepInfo: Unused
[0453] Parameter puArgErr: Unused
[0454] Returns: Success
[0455] Quit Event: [0456] Calls CleanupStrayDocuments
[0457] DocumentBeforePrint Event: [0458] Calls WriteClassifications
[0459] Cancel print if classifications are not okay
[0460] DocumentBeforeSave Event: [0461] If document is dirty and
this is not an auto-save [0462] Calls WriteClassifications on
Document [0463] Calls CheckDowngrade on Document [0464] Calls
SetRMSPermission on Document [0465] Calls HashProperties on
Document [0466] If any of these methods return false [0467] Cancel
the Save
[0468] WindowActivate Event: [0469] Calls FindOfficeDocument [0470]
If document not in collection [0471] Calls AddOfficeDocument [0472]
Calls EnableCommandBar [0473] Calls ShowCommandBar [0474] Calls
CleanupStrayDocuments
[0475] WindowDeactivate Event: [0476] Calls FindOfficeDocument
[0477] Calls CleanupStrayDocuments
[0478] xlvii. HRESULT
CWordApplicationEventHandler::ProcessCommand(int nControlID, int
nCommand, boot fMakeDirty)
[0479] Summary: Show the about dialog
[0480] Parameter nControlID: ID of control
[0481] Parameter nCommand: unused
[0482] Parameter fMakeDirty: unused
[0483] Returns: Success
[0484] Show About dialog
[0485] It will be apparent to persons skilled in the art that many
alternatives, modifications, and variations can be made without
departing from the scope as defined in the claims. The method steps
described may be embodied in sets of executable machine code stored
in a variety of formats such as object code or source code. Such
code is described generically herein as programming code, or a
computer program for simplification. Clearly, the executable
machine code may be integrated with the code of other programs,
implemented as subroutines, by external program calls or by other
techniques as known in the art.
[0486] A computing environment for executing the document creation
application and the classification toolbar may be implemented as
computer software in the form of computer readable code executed.
The computing environment may be any number of computing or
computer based platforms such as mobile devices, personal computer,
notebook computers, or personal digital assistants. The computer
comprises central processing unit (CPU) and memory. The CPU may be
a single processor or multiprocessor system. In various computing
environments, main memory and storage can reside wholly on computer
environment, or they may be distributed between multiple
computers.
[0487] Input devices such as a keyboard and mouse may be coupled to
a bi-directional system bus of a computer for receiving input for
creating documents within the web client. The keyboard and mouse
are for introducing user input to a computer and communicating that
user input to processor if required. Computer may also include a
communication interface. Communication interface provides a two-way
data communication coupling via a network link to a network by
wired or wireless connection or may provide an interface to other
host devices by a direct radio frequency connection. In any such
implementation, communication interface sends and receives
electrical, electromagnetic or optical signals which carry digital
data streams representing various types of information.
Communication between the communication interface unit and the
network or host use electrical, electromagnetic or optical signals
which carry digital data streams. The signals through the various
networks and the signals on network link and through communication
interface, which carry the digital data to and from computer, are
exemplary forms of carrier waves transporting the information.
[0488] The computer processor or similar device may be programmed
in the manner of method steps, or may be executed by an electronic
system which is provided with means for executing these steps. The
storage device may include both fixed and removable media, such as
magnetic, optical or magnetic optical storage systems, Random
Access Memory (RAM), Read Only Memory (ROM) or any other available
mass storage technology. The storage device or media may be
programmed to execute such method steps. As well, electronic
signals representing these method steps may also be transmitted via
a communication network.
[0489] The embodiments described above are intended to be
illustrative only. The scope of the invention is therefore intended
to be limited solely by the scope of the appended claims.
* * * * *