The initial draft (version 1.0), contained in a Microsoft Word document, was heavily reviewed following the input provided by [[CIMP]] team members and was converted in this [[TiddlyWiki|About]] for version 2.0. The following changes were made:\n* Another [[user scenario|Counsel Scenario]] was added, to illustrate how the [[CIMP]] will overcome the [[Email Overload]] challenge\n* Sections have been re-arranged:\n** To provide for increased readability by readers not accustomed to [[Web 2.0]] technologies\n** To increase user scenarios visibility\n** To decrease the importance of governance and implementation issues\n** To provide ready access to key concepts such as the [[SIMF]], [[RSS]], [[Blogs]], [[Wikis]], [[JAG Master File Plan]], etc.\n* All the content was reviewed for micro-edition portability\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
In this version:\n* Document Navigation was completely changed with the addition of contextual menus in each [[tiddler|http://en.wikipedia.org/wiki/Tiddler]], leveraging [[TagglyTaggin|http://simonbaird.com/mptw/#TagglyTagging]]\n* All tiddlers were reviewed and edited for micro-content coherence\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
* Added explanations and a screenshot in the [[Read First]] [[tiddler|http://en.wikipedia.org/wiki/Tiddler]]\n* Deleted the Navigation [[tiddler|http://en.wikipedia.org/wiki/Tiddler]] (all content moved to [[Read First]])\n* [[Read First]] text amended to correspond to major document headings, corresponding modifications made in several other tiddlers\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
* Added a note about ''not using the browser back'' button in [[Read First]]\n* Added the current version number in [[Read First]]\n* Re-wrote the user-scenarios to make them easier to read, to focus on only one or two aspects and added these scenario subheadings:\n** Objective\n** Why should you care?\n** The Future\n** Conclusion\n* Added a [[resource|http://checkettsweb.com/tw/tiddlywikise.htm]] in the [[About]] list\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
* Added the ~AjaxWrite example in [[Ajax]] and a screenshot.
* Added the [[Feedback]] page (interactive form made with ~ZohoCreator) and link to it in the Home page\n* Modified the Horizontal Top Menu to include [[Feedback]]
* Added links to [[Feedback]] throughout paper (at the end of selected tiddlers)\n* Removed [[Context]] from the Top Horizontal Menu\n* Removed [[Revisions]] from the Top Horizontal Menu\n* Steps 1 through 6: cleaned up tags, headers and footers\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
* Added:\n** [[DLaw T Scenario]]\n** [[DLaw T Requirements]]\n** [[DLaw T Course Materials]]\n** [[Lessons Learned]]\n** [[The Web As A Resource]]\n* Modified ManageInfoEfficiently in order to take account of [[DLaw T Requirements]] and vision for the Military Law Center (or Institute) \n* Added in [[Web 2.0 and the Legal Profession]] and [[Blogs]] the [[3L Epiphany Taxonomy of Legal Blogs|http://3lepiphany.typepad.com/3l_epiphany/2006/03/a_taxonomy_of_l.html]]\n* Added a conclusion to the [[DJAG COS Scenario]]\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^\n
* Added "CIMP In A Nutshell" in [[CIMP]]\n* Added [[Before and After]] and a reference to it in [[CIMP]]\n* Added the proposed record series to the [[JAG Master File Plan]]\n* Added the [[JAG CIMP RSS feed|http://feeds.feedburner.com/jagcimp]]: <HTML><a href="http://feeds.feedburner.com/jagcimp" title="Subscribe to the JAG CIMP RSS feed" rel="alternate" type="application/rss+xml"><img src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="border:0"/></a>\n</HTML>\n* Added the [[email-based|http://www.feedblitz.com/f/?Sub=48386]] subscription service\n* Changed several titles and related references to remove the character "/" (this character prevents permaview shortcuts from properly working)\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
* Created the new [[Home]] page and made it the default page\n* Changed the side bar email subscription chiclet, as it was not displaying a proper count of email subscribers (it was staying at one)
* Added [[Judicial Blogging|http://www.slaw.ca/2006/04/18/judges-blogging/]] reference to [[Web 2.0 and the Legal Profession]]\n* Added [[Bloggership: How Blogs are Transforming Legal Scholarship|http://cyber.law.harvard.edu/home/bloggership]] (from Harvard Law School) to [[Web 2.0 and the Legal Profession]]
Last week, I met with representatives of the Directorate of Law / Training. They were explaining the efforts they had undertaken to standardized how they named files, how they organize their files electronically to facilitate the sharing of information, subject to appropriate access restrictions. This meeting and several other unrelated issues prompted this important revision.\n\nIn that meeting, ~DLaw/T was essentially consulting us (the [[CIMP]]) to make sure what they had in mind would line up with the upcoming [[Business Transformation]] facilitated by the CIMP. This brings up the concept of [[Local Implementation Plans]], to be presented at the Requirements Validation Group [[Retreat|RVG Retreat - June 06]] in June 2006. In addition, some related concepts and information topics, such as [[File Naming Convention]], have been developed in this revision. \n\nI have also taken this revision opportunity to:\n* Significantly modify the [[Roadmap]] and related steps to take into account the preferred [[Free and Open Source|FOSS]] solution to form the basis of the new JAG Web Site - see [[Drupal]];\n* Take into account the fact that several deployed legal officers have access to the classified network, from which classified legal information could be managed - see [[Classified Network]].\nPlease see (click on the topics to open them):\n* Added:\n** [[Drupal]]\n** [[Taxonomy Management]]\n** [[Forums]]\n** [[Comments]]\n** [[RVG Retreat - June 06]] - the latest draft schedule for the retreat will be maintained here\n** [[Local Implementation Plans]] - these plans will reflect how directorates and regional offices will change their Information Management practices\n** [[Pour les francophones]]\n** [[Case Templates]]\n** [[Case Books]]\n** [[File Naming Convention]]\n** [[File Folder Convention]]\n** [[File Usage Convention]]\n** [[Classified Network]]\n* Significantly Modified:\n** [[Managing Information Efficiently|ManageInfoEfficiently]] - expanded the topic\n** [[Portal]] - modified to take into account the new topic [[Drupal]]\n** [[Roadmap]] (and all associated steps) - modified:\n*** The Roadmap is now a unified roadmap, providing a global picture of the necessary [[Business Transformation]], the delivery of new [[IT]] capabilities to the [[Office of the JAG]] and the linkages between the two sets of activities\n*** To take into account the new topic [[Drupal]]\n** [[Recorded Information]] - added the "JAG policy statement" to the effect that all JAG corporate records will be managed using hard copy case books until such time as the new [[IT]] environment delivered by the [[CIMP]] is deployed. At that time, all JAG corporate records will be managed electronically.\n* Modified:\n** [[Home]] - added table rows about:\n*** [[Revisions]] (how to find out what changed when in this discussion paper)\n*** [[Local Implementation Plans]]\n*** [[Pour les francophones]]\n** [[JAG Master File Plan]] - removed duplicate record series (6566) about grievances\n** [[Business Transformation]] - added reference to [[Local Implementation Plans]]\n** [[Assumptions]], [[CIMP]], [[Context]] - added [[Classified Network]]\n** [[Web 2.0]] - related Web 2.0 alignment efforts to the delivery of the [[Portal]] and other [[IT]] capabilities\n** [[Web 2.0 and the Legal Profession]] - slightly changed the ending of that topic\n** [[IT]] - added detailed info\n** [[FOSS]] - added reference to [[Open Source for the enterprise: Managing Risks - Reaping Rewards|http://imbok.blogspot.com/2006/05/book-review-open-source-for-enterprise.html]]\n** [[Social Tagging]] - added a cross-reference to [[Taxonomy Management]]\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
Added:\n* [[La pratique du droit: Comment exploiter les technologies web 2.0?|http://www.slaw.ca/2006/05/08/pratique-droit-exploiter-technologies-web20]] to [[Pour les francophones]] and in [[Web 2.0 and the Legal Profession]]\nModified:\n* [[RVG Retreat - June 06]] - made several changes to the schedule\n
Modified:\n* Clarified distinction between electronic and hard copy case templates in [[Case Templates]]\n* [[RVG Retreat - June 06]] (the schedule)\n** Clarified and simplified the objectives of the Retreat\n** Changed the order of some sessions\n** Added a session to gather electronic case template requirements\n* Added a row on the home page table to link to [[RVG Retreat - June 06]]
Added:\n* In [[Web 2.0 and the Legal Profession]]:\n** Excellent article on the impact of legal blogs: The American Lawyer on the Web, Dahlia Lithwick, [[Blawgs On A Roll|http://www.law.com/jsp/tal/PubArticleTAL.jsp?hubtype=Inside&id=1148634332093]]\nModified:\n* The [[schedule|RVG Retreat - June 06]] for the [[RVG Retreat - June 06]] is now final
Some of the upcoming sessions of the Retreat have been shuffled and modified, resulting in a new [[schedule|RVG Retreat - June 06]]. I have also clarified and augmented the [[Business Transformation]] topic. Have also added a row in the [[Home]] topic, about [[getting started with web 2.0|http://imbok.blogspot.com/2006/06/starting-with-web-20_22.html]].\n
This paper has been prepared using a non-linear personal [[wiki|http://en.wikipedia.org/wiki/Wiki]] called [[TiddlyWiki|http://en.wikipedia.org/wiki/TiddlyWiki]]. It is an entirely self-contained micro-content wiki resulting in one single HTML file. Absolutely no software, nor any programming, nor any web design skills were needed to produce this file.\n\nIf you are interested in learning more about ~TiddlyWikis (see [[Read First]] if you are only interested in knowing how to navigate this paper):\n* The first step is to visit the [[original TiddlyWiki|http://www.tiddlywiki.com/]] by Jeremy Ruston\n* The associated [[tutorial|http://www.blogjones.com/TiddlyWikiTutorial.html]] is also simple and useful\n* Google has a [[forum|http://groups.google.com/group/TiddlyWiki]] on ~TiddlyWiki\n* The Portals Magazine has covered ~TiddlyWikis in [[this article|http://www.portalsmag.com/articles/default.asp?ArticleID=7270&TopicID=10]] by Demir Barlas\n* If you want to move into customization territory, check [[TiddlyStyles|http://www.checkettsweb.com/]]\n* [[TiddlyWiki Mania|http://www.socio-kybernetics.net/saurierduval/2005/07/tiddlywiki-mania.html]] presents many flavours of ~TiddlyWikis\n* Here is an example of a [[student TiddlyWiki|http://checkettsweb.com/tw/tiddlywikise.htm]]\n* [[TiddlyForge|http://www.tiddlyforge.net/]] contains the latest news and you can subscribe to it via [[RSS]]\n* [[MonkeyPirate|http://simonbaird.com/mptw/]] and [[TiddlyWikiTips|http://www.tiddlywikitips.com]] are great resources for ~TiddlyWiki stuff - this document is based on a ~MonkeyPirate ~TiddlyWiki\n* ELS Design Studios maintains advanced ~TiddlyWiki resources and plugins at [[TiddlyTools|http://www.tiddlytools.com/]]\n* I have also [[bookmarked and tagged|http://del.icio.us/Fidelis1970/Tiddly]] several ~TiddlyWiki resources\nThe author of this paper is [[Maj Patrick Cormier]]. Please take the time to leave us some [[Feedback]].\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
Ajax, as [[defined|http://en.wikipedia.org/wiki/Ajax_%28programming%29]] in Wikipedia:\n<<<\nAsynchronous ~JavaScript And XML, or its acronym Ajax, is a Web development technique for creating interactive web applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire Web page does not have to be reloaded each time the user makes a change. This is meant to increase the Web page's interactivity, speed, and usability.\n<<<\nAjax is perceived by [[several lead thinkers|http://del.icio.us/fidelis1970/Ajax+Trends]] and programmers on the World Wide Web as the technology of choice when it comes to developing online applications. One promising feature, or rather the result of using Ajax, is the fact that the application only sits on the server: no client workstation upgrades are necessary - see [[The End of Software Upgrades, Fixes, and Security Patches|http://web2.wsj2.com/why_ajax_is_so_disruptive.htm]].\n\nA recent example of an Ajax application is [[AjaxWrite|http://www.ajaxwrite.com/]], a very similar to Microsoft Word application available online for free - not need to download anything. see the AjaxScreenshot.
[img[~AjaxWrite Screenshot|http://www.gov20.info/files/sc_ajaxwrite.JPG]]
The generic Standardized Information Management Framework ([[SIMF]]), as taught at the [[Canada School of the Public Service|CSPS]] in course [[I310]], include the following nine components.
The generic Standardized Information Management Framework ([[SIMF]]), as taught at the [[Canada School of the Public Service|CSPS]] in course [[I310]], include the following six input categories (see also: [[JIA]]).
In planning the new information environment of the Office of the JAG, the following assumptions have been made:\n* The new JAG information environment will be developed by the [[CIMP]] and later managed by the [[Office of the JAG]] in accordance with the ''JAG Standardized IM Framework'' ([[SIMF]] v3.3 or later)\n* The Office of the JAG needs two [[PB Networks|PB Network]]: one for the [[Directorate of Defence Counsel Services|http://www.forces.gc.ca/jag/military_justice/ddcs/default_e.asp]] and another one for the rest of the [[Office of the JAG]];\n* The Office of the JAG needs a [[Classified Network]] to the extent that legal officers in operational law have access to a Titan workstation;\n* The Office of the JAG needs a [[Document and Records Management System|DRMS]] (DRMS);\n* The Office of the JAG needs a [[Practice and Case Management System|PCMS]] (P/CMS); and\n* The Office of the JAG needs a [[Portal]] ("Portal" is used throughout this discussion paper as the equivalent of a "Web Content Management System").\nThe practice of law, its requirements and the nature of the Office of the JAG and of National Defence are such that if all capabilities listed above ([[PB Network]], [[DRMS]], [[PCMS]] and a [[Portal]]) are exploited in the Office of the JAG, all other “JAG applications” can be migrated to these new systems and no significant other ~JAG-wide legal application is needed. \n\nIn other words, the IT capabilities identified above would significantly contribute to the desired integrated information environment, capable of accommodating new JAG business lines, for example, without the need to redesign, upgrade or procure new IT capabilities. \n\nFinally, the [[CIMP]] will investigate how to fulfil these [[IT]] requirements in the following order of priority:\n* DND solution, by closely monitoring IM Group initiatives and offerings;\n* Government of Canada (GC) solution, by closely monitoring [[PW&GSC]] [[IT SSO]] initiatives and offerings;\n* [[FOSS]] solutions; and\n* ~Commercial-and-Off-the-Shelf (COTS) solutions.\nThe [[CIMP]] //will not develop any custom software//. By customization, we mean any code tweaking resulting in a significant cost barrier to subsequent upgrades.\n\n^^Next: [[User Scenarios]] (you can also leave some [[Feedback]])^^\n
The impact of the [[CIMP]] on the [[Office of the JAG]] can be measured as follows:\n|!BEFORE THE CIMP|!AFTER THE CIMP|\n|bgcolor(gray): @@color(white): ''Loss of information value''@@ |bgcolor(gray): @@color(white): ''Harvesting of information value''@@ |\n|Each year, thousands of legal opinions are written, several constitute [[Material of precedential value]]. Most of which can only be retrieved by “word of mouth” (someone has to remember the opinion exists and where it is located). Local file plans, when they exist, are unsatisfactory. There is ~JAG-wide index of all “legal services requests” that are cross-referenced to opinions delivered. No hierarchical index exists of the three JAG pillars with cross-referenced content, no way to complete metadata or full text search of all legal opinions and material of precedential value; and certainly no way of attempting to do any of this electronically.|Each year, thousands of legal opinions are automatically entered into the [[Documents Management / Records Management|DRMS]] system and cross-referenced into the [[Case Management system|PCMS]] and [[JAG Master Index]], if applicable. Any legal opinion can be retrieved electronically in a number of ways: by the case for which it was written, from the intuitive hierarchical [[JAG Master Index]], by full text search or by metadata search. __Note__: Classified legal opinions are profiled. Their existence and location are known (existence and location would rarely be classified), and although the full text search is not possible for classified opinions, the other three retrieval methods are available.|\n|bgcolor(gray): @@color(white): ''Individual Lawyers practicing side by side''@@ |bgcolor(gray): @@color(white): ''Each Lawyer benefits from full force of the Office of the JAG, past & present''@@ |\n|Legal officers, whether Deputy Judge Advocates, Prosecutors or deployed Legal Officers, are typically left to their own experience (and the experience of their immediate colleagues and supervisor), their own accumulated information and their contacts within the Legal Branch when it comes to deliver legal advice and services. How many legal officers have binders full of [[Material of precedential value]] in their office? How many legal officers have simultaneous access to all these binders, or even know about their existence? How many legal officers know the areas of precise expertise of all their fellow legal officers and are able to access them quickly? Although the [[Office of the JAG]] has made huge strides in training its legal officers (Basic and Intermediate courses), it still does not provide an information environment giving each lawyer access to the collective knowledge and work of his colleagues and predecessors.|All [[Material of precedential value]], which includes internal legal opinions but also any other document and resource susceptible of being useful later when dealing with a particular topic (e.g. doctrine, Master’s thesis, MLTP papers); is organized intuitively into three ~JAG-wide electronic resources: the[[JAG Master Index]], including the three JAG Pillars – Military Justice, Operational Law and Military Administrative Law; the [[JAG Case Management system|PCMS]] (including a [[Document Management / Records Management|DRMS]] system running in the background) and the new [[Portal]]. Three legal analysts maintain the index structure and content. Legal officers validate this Master Index, contribute to it and use it daily.|\n|bgcolor(gray): @@color(white): ''//Ad hoc// Information Resources Become Obsolete''@@ |bgcolor(gray): @@color(white): ''Simple and Widely Used Information Resources Remain Current and Useful''@@ |\n|Several //ad hoc// initiatives, such as the grey & burgundy Military Justice Handbook, the Compendium of Legal Opinions, the HR provisions Annotated ~CD-ROM, the JAG Library Court Martial Index, etc.; have come and passed, because their success was tied to a particular driving force or individual. When this individual left, the initiative stopped, the resource stopped being updated and the resource became suspect because it became outdated.|One [[Document and Records Management|DRMS]] system. One [[Practice and Case Management|PCMS]] system. One [[Portal]]. By closing off all the various ad hoc initiatives throughout the [[Office of the JAG]] and investing their content in central applications that are understood and used by all; the [[Office of the JAG]] creates [[Information Resources]] with lasting value because they become unique resources.|\n|bgcolor(gray): @@color(white): ''The Concept of Information Holdings and the discipline of Records Management are not understood''@@ |bgcolor(gray): @@color(white): ''Information Holdings Are Clearly Defined and Consistently Managed''@@ |\n|...therefore precluding any consistent and systemic management of information. Before [[CIMP]], there are approximately 50 file plans in use throughout the [[Office of the JAG]], including DJA offices using file plans from the local base. File plans are designed differently. None clearly make the distinction of managing “case/client information” as opposed to “legal reference” information. This can be explained in part by a [[Departmental records management framework|DSCDS]] that has never been amended in order to facilitate the practice of law.|Shared understanding is achieved throughout the [[Office of the JAG]] as three information holdings, or record groups, are identified and managed: Cases, Legal Reference and Administrative. The Departmental records management ([[DSCDS]]) is amended and [[new JAG record series|JAG Master File Plan]] are implemented to reflect this new approach. Cases are identified (court martial, summary trial, grievances, legislative amendment, operation, etc.) and for each type of case a case template and docket items are developed, ensuring consistent and efficient management of all types of cases and their information (e.g. standard checklists when opening new litigation matters, checklists in anticipation of trial, etc.). [[Material of precedential value]] is also managed distinctively and centrally for the benefit of all the [[Office of the JAG]]. All file plans are replaced with [[one file plan|JAG Master File Plan]] to be used throughout the Office of the JAG. Directorates, regional offices and DJA offices continue to be authorized to maintain files locally according to a unique JAG file plan.|\n|bgcolor(gray): @@color(white): ''Manual Gathering of Performance Measurement Data''@@ |bgcolor(gray): @@color(white): ''Electronic and Transparent Gathering of Performance Measurement Data''@@ |\n|Performance Measurement data is currently manually sent from a base to a regional office, then manually from the regional office to Ottawa, then manually fed into the JAG Performance Measurement Decision Support System (“PMDSS”). The gathering of data is not transparent to Legal Officers and support staff – one must specifically resort to using a distinct Microsoft Access application to manually enter the data.|Legal officers use the [[Practice and Case Management|PCMS]] system because the system is useful to them. It makes their practice easier and more efficient. Transparently to them, aggregate reports are derived from performance indicators found in the case templates. Performance measurement data is gathered painlessly in real time. The data is reliable and comprehensive.|\n|bgcolor(gray): @@color(white): ''No PROTECTED B (“PB”) electronic environment throughout the Office of the JAG''@@ |bgcolor(gray): @@color(white): ''PB Environments – One for JAG / Another for DDCS''@@ |\n|Opinions are saved locally with PKI and therefore not searchable. No PB information can be entered in custom JAG applications. DND security rules result in the prevention of sharing most legal information produced internally, because such information is subject to the Solicitor Client Privilege and is PROTECTED B.|Two Virtual Private Networks (~VPNs) enabling two [[PB Network]]s, one for DDCS and one for JAG/DMP. All Legal Officers with access to a DWAN station, including deployed legal officers and reservists, have access to shared legal information within a PB environment. PB information can be saved in the new JAG [[Practice and Case Management|PCSM]] system. Full text and metadata searches of PB information, including internal legal opinions, can be done from anywhere inside this PB Network. In addition to VPN security, information is only accessible on a need-to-know basis within the software.|\n|bgcolor(gray): @@color(white): ''Custom Legacy JAG Applications are hard (and costly) to modify''@@ |bgcolor(gray): @@color(white): ''No custom applications / Flexible Case Templates''@@ |\n|For example, the customized Court Martial Application System. Few legal officers know how to use it and even fewer are using it on a regular basis. Same for the Summary Trial database. Key legal opinions are not retrievable from these applications. In addition, other fields of practice in the Office of the JAG are not supported by any comprehensive application, such as operational law and military administrative law. Legal Officers cannot, within seconds, know for any given operation (or Board of Inquiry) who was involved in which capacity (all ROTO legal officers, contingent commanders, etc.); what happened when (chronology of events); what were the key documents associated with the case (ROEREQ, ROEAUTH, Legal Annex to Op Order, etc.); and what is the key information for the operation / case.|Instead of developing custom applications such as the Court Martial Reporting System, one unique application is used and incorporates the concept of “case templates”. Case templates enable easy customization by the JAG Product Analyst and without going back to the Vendor. New [[JAG IM Directives]] provide guidance and direction on the use of these templates. As a minimum, templates would be available for court martials, summary trials, grievances, operations, Board of Inquiry, social events, etc. Any effort undertaken by one or many persons, with a start and end date, of a “repeatable” type and with a potential for standardization / optimization is a candidate for the creation of a case template. All cases provide the following information: who was involved in which capacity, what happened when (with calendaring rules and customizable docket items), documents associated with the case and key case information, customized according to the type of case.|\n|bgcolor(gray): @@color(white): ''Email Overload''@@ |bgcolor(gray): @@color(white): ''Emails automatically sorted into web logs''@@ |\n|When a legal officer or support staff member has been away for a week or more, he may come back to Outlook to find himself drowned by hundreds of emails. Some of these emails, for public dissemination, are prescriptive rather than informative, such as CANFORGEN’s superseding any given CFAO or DAOD temporarily. One more item to “remember”, however, notwithstanding the excellent memory of lawyers, there is a limit on how legal officers can compensate mentally for the constant normative changes issued by email. This [[Email Overload]] problem is real and experienced by all legal officers and support staff.|A JAG IM Directive (see next) on Email Management prescribes the use of [[web logs|Blogs]], also called "blogs", available when legal officers log into their new [[Portal]]. Users are automatically subscribed to chosen [[Blogs]] (for example “CANFORGEN”, “JAG Social Events”). Some channels are directorate or regional office specific. Other channels are topic specific and can be individually subscribed to (see the [[Counsel Scenario]] for several examples). There are four key advantages to using channels. One, the information is only at one place, not in 289 inbox. Two, the information is automatically sorted and will go to whoever needs and wants to read it (concept of subscription). Three, content in channels is retroactive – a legal officer posted in APS 2009 will see channel content from channel inception rather than posting date and email account creation. Last, normative emails, in addition of dissemination in the appropriate channel(s), would result in the amendment of the target directive by the channel owner, for the benefit of all users, if applicable.|\n|bgcolor(gray): @@color(white): ''Few general or JAG specific IM Directives''@@ |bgcolor(gray): @@color(white): ''Clear, simple, exhaustive and detailed JAG IM Directives''@@ |\n|The Management of Information is an activity left to individuals and at best coordinated at the directorate or regional office level. There are few written, detailed and comprehensive JAG wide directives on IM: no unique JAG file plan, no prescriptive rules on how to structure case information, no obligation to centralize the management of material of precedential value and to make it available to all legal officers, no detailed guidance on offsite storage and archival, no standardization of email management, no policy direction on JAG unique applications, no detailed direction on correspondence management, no written rules providing for Conflicts of Interest searches when new litigation matters are opened and no general direction issued pursuant to the NDA to DMP and DDCS to ensure the JAG standard for IM is to be observed in these more autonomous organizations.|[[Business Transformation]] is achieved by the promulgation of new [[JAG IM Directives]] (“IMD”). Such directives are drafted by the [[CIMP]], validated by the Requirements Validation Group and approved by [[JAG & Deputies]]. Each of the following areas is covered by a distinct [[IMD|JAG IM Directives]]: Policy Direction, JAG Master File Plan, Decentralized Records Management, Case Files, Legal Reference Files, Administrative Files, Record Control / Storage / Protection, Offsite Storage & Disposal, Email Management, Publications Management, JAG Applications & Database Management, Access to Information & Privacy, Correspondence Management, Conflicts of Interest, General direction to DMP, General direction to DDCS. Directives come with resources to implement them: one new Records Manager, three new Legal Analysts and one Product Analyst.|\n|bgcolor(gray): @@color(white): ''Information Management is not assessed nor audited''@@ |bgcolor(gray): @@color(white): ''Information Management is assessed and audited''@@ |\n|Information in a legal office is a fundamental resource and its management as important as proper HR management and Financial management. Before the CIMP, there are no performance indicators measuring if information management is performed efficiently, no rollup indicator on IM under Stewardship of Resources, no way to assess and benchmark IM in the Office of the JAG against other federal organizations, no way to objectively measure how well the Management of Government Information (MGI) policy is implemented. Continuous improvement of IM is impossible due to lack of ongoing measurement and evaluation.|IM Performance indicators are in place throughout the Office of the JAG, most of them in a transparent fashion to users - they are built in the IT capabilities deployed by the CIMP. A rollup indicator indicating how prudently Information, as a resource, is managed, fits under Stewardship of Resources. The Government of Canada IM Capacity Check has been completed prior to and after CIMP, thus permitting benchmarking of the Office of the JAG compared to itself (progress over time) using objective criteria and to other federal institutions. The MGI Policy Readiness Indicators are deployed and used, indicating how well the Office of the JAG respects the Management of Government Information (MGI) policy. Continuous optimization of IM is in effect as IM is regularly assessed and audited.|\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
This is an example of a blog:\n\n[img[Blog Screenshot|http://www.gov20.info/files/blogexample.JPG]]
Web logs, or [[blogs|http://en.wikipedia.org/wiki/Blog]], enable authors and publishers to post on web pages short articles. When a post is made, the other articles on the page are pushed down to make room for the new post. Blogs often include one or two side bars with permanent links and information. They are typically syndicated and offer one or more [[RSS]] feeds. \n\nThe fact that bols were heavily used as diaries should not limit their potential use. When cars were invented, only a portion of the population used them, often on a Sunday drive. No one ever imagined at the time that cars would be used to go to work. Blogs are similar. Only because they have been typically used as diaries does not mean their use should be constrained to diaries.\n\nBlogs can be efficiently exploited in corporate and governmental contexts by using them to redirect the flow of //mass emails//. Instead of cluttering all users email inbox, all mass emails will be redirected to subject-based web logs. Users, depending on their user category and areas of interest, will have mandatory and optional subscriptions to these blogs and will be notified of new content in a [[News Aggregator|http://en.wikipedia.org/wiki/Aggregator]] which can simply be incorporated in a Portal - the preferred solution currently investigated by the [[CIMP]] in order to [[manage information efficiently|ManageInfoEfficiently]].\n\nThere are already [[over 700 legal blogs|http://3lepiphany.typepad.com/3l_epiphany/2006/03/a_taxonomy_of_l.html]].\n\nThis is what a [[Blog Screenshot|BlogScreenshot]] looks like, although please bear in mind they all look different.\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
The Office of the JAG fulfills a unique statutory mandate in the Canadian Government and National Defence. Its business lines and activities reflect a wide range of responsibilities. In order to remain agile and responsive to all its clients, the information environment must take into account the business context of the Office of the JAG by a careful analysis of the larger Defence and Canadian Government priorities and goals.
Many Information Technology projects fail, because they do not adequately recognize the difficulties associated with [[business transformation|http://en.wikipedia.org/wiki/Business_transformation]]:\n<<<\n''Business transformation'' is a key executive management initiative that attempts to align the technology initiatives of a company more closely with its business strategy and vision. The degree to which a company can implement new initiatives to support changes in business strategy is known as business agility. Business transformation is achieved through efforts from the business and IT sides of the company.\n<<<\nThe futur steady state information environment in the [[Office of the JAG]], after the [[CIMP]] has delivered the [[JAG Information Architecture|JIA]], will be very different than the current one. As a result, significant efforts have been completed:\n* Identification of all organizational facets related to [[integrated Information Management|http://imbok.blogspot.com/2005/12/in-nutshell-integrated-information_14.html]] - called [[Architecture Components]];\n* Identification of what should influence the shaping of these [[components|Architecture Components]] - called [[Architecture Inputs]];\n* Superimposition of coherent [[Vision & Principles]];\n* Organization of all business transformation efforts and provide associated direction using [[JAG IM Directives]] and [[Local Implementation Plans]]; and\n* For the [[Portal]] component of the [[CIMP]], the provision of a [[Roadmap]] for the [[Office of the JAG]] to follow, leveraging [[Web 2.0 and the Legal Profession]].\nThe result of all this work? From June to December 2006, users in the [[Office of the JAG]] will see a complete transformation of their paper-based environment, including the implementation of a [[JAG Master File Plan]], [[JAG Master Index]] and [[File Folder Convention]]. Starting in 2007, they will see a complete transformation of their electronic environment, to include the deployment of the new [[IT capabilities|IT]].\n^^@@color(gray): Next: [[Context]] (you can also leave some [[Feedback]])@@^^\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
The JAG //Comprehensive Information Management Project//, or "CIMP", is [[National Defence|http://www.forces.gc.ca/]] [[capital project|Capital Projects]] 758.\n\n|>|!CIMP In A Nutshell|\n| WHY? |Lawyers need two things in order to deliver legal advice: (1) facts from their clients; and (2) access to legal information in their area of practice. The latter is a professional requirement and its importance for lawyers (access to this information) is fundamentally different than for other professionals or users in government. Accessing legal information goes to the root of practicing law. A lawyer cannot practice law without access to legal information. Canadian legal officers (military lawyers) currently have inadequate access to legal information in their areas of practice.|\n| WHY DIFFERENT? |Most lawyers throughout North America have sufficient access to legal information in their areas of practice, including US JAG officers, because they benefit from a critical mass of jurists in their field. Canadian Legal Officers do not benefit from a sufficient critical mass to generate sufficient legal information, in the form of readily available sources of law - textbooks, online commercial sources such as ~LexisNexis, Quicklaw, etc.|\n| CAPABILITY DEFICIENCY |Therefore, the Office of the JAG is faced with a ''fundamental capability deficiency in the form of inefficient access to legal information in three areas of practice'': Military Justice, Operational Law and Military Administrative Law. Together, these three fields cover approx. 1,200 different legal topics.|\n| SOLUTION |The CIMP will alleviate this capability deficiency with its deliverable to the JAG: the JAG Information Architecture ([[JIA]]), which includes five key [[IT]] capabilities: two [[Protected B Networks|PB Network]], one [[Classified Network]], [[Document and Records Management|DRMS]], [[Practice and Case Management|PCMS]] and a [[Portal]]. The Portal will include [[Web 2.0]] technologies such as [[RSS]], [[Blogs]], [[Enterprise Bookmarking|Social Tagging]] and [[Wikis]].|\n\nIn 2003, the [[Office of the JAG|http://www.forces.gc.ca/jag/]] decided to invest in the development of a long term Integrated Information Management (“Integrated IM”) solution. The JAG accordingly sponsored the CIMP. \n\nIn 2004 and 2005, the CIMP successfully completed the pre-definition phase and endeavored to obtain Ministerial approval for the next phase of the project. The CIMP received Ministerial approval on March 20th, 2006, to undertake the next phase of the project. \n\nThe deliverable of the CIMP is called the “JAG Information Architecture” ([[JIA]]), derived from a Standardized IM Framework ([[SIMF]]) and applied to the Office of the JAG. Standardized IM Frameworks are taught at the [[Canada School of the Public Service|http://www.myschool-monecole.gc.ca/main_e.html]] in course [[I310]], //"Integrated Information Management"//. The JIA identifies and relates to each other all 24 facets of Information Management.\n\n^^@@color(gray): We suggest that you also read [[Before and After]]. Thoughts? comment? suggestions? you can leave some [[Feedback]].@@^^
The [[Canada School of the Public Service|http://www.myschool-monecole.gc.ca/main_e.html]].
Capital Projects are the entities in National Defence, managed in accordance with the [[Defence Planning & Management|http://tinyurl.com/jp4jy]] (a Google cached page until the VCDS site is back up) Framework, valued over $5M, approved by the [[Minister of National Defence|http://www.dnd.ca/site/Minister/index_e.asp]] (if between $5M and $30M) or [[Treasury Board Secretariat|http://www.tbs-sct.gc.ca/]] (over $30M), that usually include a significant procurement cost and/or recurring Personnel, Operations & Maintenance (PO&M) costs.\n\nThe [[CIMP]] is National Defence capital project 758.
Case books are the physical instances of [[Case Templates]], just as an electronic case managed in the [[Practice and Case Management System|PCMS]] will be electronic instances of [[Case Templates]].\n\nInstead of file folders in which we typically have one stack of documents, case books allow six distinct stacks of documents to be accumulated and maintained according to conventions specified in [[Case Templates]]. Case books are often found in litigation law firms. For example, the following stack locations could be standardized as follows:\n* ''1'': The file requisition, showing basic information about the file.\n* ''2'': Correspondence to and from the client.\n* ''5'': Research material.\n* ''6'': Handwritten notes.\nLocations 3 and 4, if it is a litigation file, would contain evidence, transcripts and other court documents. A grievance file would contain the grievance, investigation reports, etc. - each case template specifies what kind of information is to be maintained in each stack location.\n\nCase Books will be used in the [[Office of the JAG]] for all but basic client files until the delivery of the new [[IT]] capabilities and their certification under CGSB 72.14, after which all client files records will be managed from the [[Practice & Case Management System|PCMS]].
The adoption of Case Templates is one aspect of [[Business Transformation]]. For the purposes of the [[CIMP]], there are two types of case templates:\n* Hard copy case templates\n* Electronic case templates\nInitially, hard copy case templates will be relied upon when creating case instances in the physical form of case books. Case books are "folders" in which there are ''six'' locations to stack documents, instead of the standard ''one'' location as currently found in hard copy files used in the [[Office of the JAG]]. The template in this case specifies what type of information is to be found at each location of the case book. There are as many such case templates as there are types of cases managed in the [[Office of the JAG]]: court martial, summary trial, grievances, course, course instance, exercise, operation, etc.\n\nElectronic case templates fulfill a similar role, for the [[Practice and Case Management System|PCMS]]. The template in this case specifies what fields of information are to be collected for each type of case.\n\nMore information on case templates and the case templates themselves can be found in the [[DWAN CIMP Web Site|http://cimp-pgii.mil.ca]].
The practice of law in operations involves the consultation and creation of classified information (SECRET and above). Legal officers, responsible to deliver legal advice and services to Canadian commanders deployed in operations, already have access to and use a classified network that is entirely distinct from the Defence Wide Area Network (DWAN). Lawyers in ~DLaw/Ops and ~DLaw/I have access to that classified network.\n\nAs a result, the [[CIMP]] has stated in one of its [[assumptions|Assumptions]] that it needs to deliver information management capabilities from within that classified network. From an end-user point of view, the same capabilities ([[Document and Records Management|DRMS]], [[Practice and Case Management|PCMS]] and [[Web Content Management - Portal|Drupal]]) will be available in that classified network. In its definition phase, the [[CIMP]] will investigate if legal officers practicing in ~DLaw/MJP&R could exchange their TEMPEST workstations for Titan workstations in order to benefit from the same [[IT]] environment when working on material subject to Cabinet Confidence and therefore classified SECRET.
Comments are fundamental: as a capability, they offer users the option of relating their comments, questions and feedback to a piece of web content. Comments can be attached to [[Blogs]], [[Wikis]] or even standard web pages.\n\n[[Drupal]] offers commenting for all content types.
The [[Common Look & Feel|http://www.informationmanagement.gc.ca/links-liens_e.asp?catid=7&topid=35]] policy of the Government of Canada prescribes a number of guidelines when developing federal governmental web sites.
Information management in the Office of the JAG must comply with federal statutes and with Government of Canada, National Defence and IM Group information management policies, including but not limited to the [[Library & Archives Act|http://laws.justice.gc.ca/en/l-7.7/text.html]], the [[Access to Information Act|http://laws.justice.gc.ca/en/a-1/text.html]], the [[Privacy Act|http://laws.justice.gc.ca/en/p-21/text.html]], Treasury Board Secretariat [[Management of Government Information policy|http://www.tbs-sct.gc.ca/pubs_pol/ciopubs/TB_GIH/mgih-grdg_e.asp]] and the //Defence Subject Classification & Disposition System// ([[DSCDS]]), as adapted to the Office of the JAG.
/***\nJust some bits and pieces\n***/\n//{{{\nconfig.messages.messageClose.text = "X"; // default is "close"\nconfig.views.wikified.defaultText = ""; // default is "The tiddler '%0' doesn't yet exist. Double-click to create it"\nconfig.options.chkHttpReadOnly = false; // Enable editing so that visitors can experiment with it\n//}}}
From time to time senior management will issue IM/IT constraints. One example of constraint is the Treasury Board [[Shared Systems Initiatives|http://www.tbs-sct.gc.ca/ssi-isp/index_e.asp]] (SSI), mandating the use of government of Canada solutions (such as [[RDIMS|http://www.rdims.gc.ca]]). An example of a self-imposed constraint would be that only commercial-and-off-the-shelf (“COTS”) solutions and technologies are to be considered, as opposed to considering applications development.
In 2003, the Office of the JAG decided to invest in the development of a long term Integrated Information Management (“Integrated IM”) solution. The JAG accordingly sponsored National Defence [[capital project|Capital Projects]] 758, the Comprehensive Information Management Project (“[[CIMP]]”). \n\nIn 2004 and 2005, the CIMP successfully completed the pre-definition phase and obtained Ministerial approval, for the next phase of the project, on March 20^^th^^, 2006. The CIMP delivers five [[IT]] capabilities to the Office of the JAG. In addition, the project supports all related [[business transformation|Business Transformation]] activities.\n\nThe deliverable of the CIMP is called the “JAG Information Architecture” ([[JIA]]), derived from a Standardized IM Framework (“[[SIMF]]”) applied to the Office of the JAG . The [[JIA]] identifies and relates to each other all 24 facets of Information Management. \n\nIn the 2005-06 period, it became apparent that the [[portal|Portal]] did not need to be delivered after the [[PB Network]]s, [[DRMS]] and [[PCMS]]. The requirement to deliver the [[portal|Portal]] after the other capabilities was an assumption made earlier at project inception. In addition, best practices in portal and web application development and current web trends and technologies are pointing to iterative portal development rather than a “define once / develop & deploy once” approach, which is typical of how [[capital projects|Capital Projects]] have to handle requirements in [[National Defence|http://www.forces.gc.ca/site/home_e.asp]]. Finally, [[trends in the legal profession|Web 2.0 and the Legal Profession]] indicate that [[Web 2.0]] technologies are ripe for exploitation by law firms.\n\nIn parallel, the web site committee of the Office of the JAG met in the fall of 2005 and decided to improve the JAG web site. Members of the committee were interested in several features currently available in the [[CIMP intranet site|http://cimp-pgii.mil.ca/]], including user login and offering dynamic content based on user categories.\n\nAs a result of this meeting, the [[CIMP]] accepted to offer, on an informal basis, planning assistance to the JAG Webmaster, in the form of a suggested [[Roadmap]].\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^\n
@@color(gray): ^^(this is the first scenario)^^@@\n|!Objective|\nIn this scenario, we illustrate how the annoying and pervasive problem of [[Email Overload]] has been solved through the use of web logs, also called [[Blogs]]; and of [[RSS]] technology, to aggregate the required blog feeds in the [[JAG Portal|Portal]]. Our Legal Counsel in this scenario, Capt Leboeuf, does not suffer from email overload, as you will soon discover.\n\n|!Why should you care?|\nAs more fully documented in the section [[Email Overload]], email does not have to represent a constant stream of interruptions, or worst, of useful-information-to-keep-but-gosh-where-do-I-keep-it?? Have you ever read an email, but cannot find it a few months after? Or: have you ever received an update from the JAG Library, describing new additions and new web sites, only to wonder how you will be able to retrieve this useful information in 1 or 2 years? What about new legal officers, missing out on useful information sent by email, //because they did not have an email account prior to joining the [[Office of the JAG]]//?\n\nYou should care about [[Email Overload]] if:\n* You want to have 8 emails instead of 147 emails when you are back from leave;\n* You want mass emails to be automatically sorted into subject-based channels, making it easier for you to browse any historical information in any given category of information;\n* You want your employer to automatically subscribe you to channels you need for your specific work;\n* You want the freedom to subscribe to additional channels depending on your own interests; and\n* You want a consolidated view of all these channels and, for each, a clear indication of the numer of unread items.\n\n|!The Future|\nIn the 2000-2010 period, Military Administrative Law (“MAL”) evolved into a distinct, organized and complete area of practice. Capt Ghislain Leboeuf, a new Legal Officer, started to scan his email after two weeks leave: only 8 emails - as opposed to 147 he would have had under the old JAG information environment.\n\nThese eight emails are specifically directed to him. All other mass emails have been re-directed to subject-based channels, called [[web logs|Blogs]], or "blogs". As a legal officer, he is automatically subscribed to the following feeds:\n* ~CANFORGENs\n* NCR Routine Orders\n* JAG Annoucements\n* ...and other topics to be determined.\nAs a member of ~DLaw/Admin Law, he is also subscribed to the following feeds:\n* Military Admin Law updates. This feed contained all the updates to the 500 MAL topics contained in the JAG [[Wiki|Wikis]] system. These topics are updated from time to time by legal officers.\n* ~CFOOs and ~MOOs\n* QR&Os and ~DAODs\n* Grievances Network\n* Boards of Inquiry\n* ...and other specific MAL topics.\nFinally, based on his personal interests, Capt Leboeuf subscribes to the following feeds:\n* MAL Search Collection. Capt Leboeuf subscribes to this optional directorate [[Search Collections]] which regularly updates him on recent developments in MAL throughout Canada and the rest of the World.\n* MAL Search Collection - Capt Leboeuf. Using his personal [[Search Collections]], in which Capt Leboeuf specified himself a number of other resources to be regularly queried; Capt Leboeuf has the freedom to be on top of issues and topics that are more specific to his work.\n* [[Nijmegen March|http://en.wikipedia.org/wiki/Nijmegen_Marches]]. Next year, Capt Leboeuf wants to be part of the JAG Team on this March, so this year, he subsribes to this feed. He is regularly updated on team activities and progress.\nAfter Cap Leboeuf has dealt with his eight emails, he proceeds to ascertain the status of a specific DAOD, currently under revision. By searching the [[blog|Blogs]] on QR&O's and DAOD's (a JAG web page containing all news and updates in real time about all QR&O's and DAOD's), he finds a CANFORGEN suspending the application of a portion of the DAOD. This CANFORGEN was issued a year before he came into the Office of the JAG but Capt Leboeuf nevertheless found it very easily.\n\nNow that he answered the question of his supervisor, Capt Leboeuf proceeded to the [[JAG Portal|Portal]]. In a matter of minutes, he was quickly updated on all that he needed to know, //knew// he could easily retrieve the information later and could invest the rest on his day working on the setup of a new Board of Inquiry.\n\n|!Conclusion|\n[[Email Overload]] can be solved by the deployment of a [[blogging platform|Blogs]] enabling the creation of several syndicated subject-based [[blogs|Blogs]]. Syndication is done automatically - the blogging platform associates with each [[blog|Blogs]] a [[RSS]] feed, used by the [[Portal]] to aggregate feed information. This is not rocket science: it is simple and entirely relies on [[FOSS]] technologies.\n\n''^^Next scenario: [[Deployed Legal Officer]] (you can also leave some [[Feedback]])^^''\n
@@color(gray):^^(previous scenario: [[Deployed Legal Officer]])^^@@\n|!Objective|\nIn this scenario, we learn:\n* Why Defence counsel will find, in the new [[information architecture|JIA]] delivered by the [[CIMP]], the optimal balance between the protection of the ~Solicitor-Client Privilege and the need to access common JAG knowledge, because case information in the [[PCMS]] is protected in distinct [[PB Network]];\n* How [[Blogs]] can be further used to announce court martial decisions, new rules of the court, etc.;\n* That [[material of precedential value|Material of precedential value]] ought to be shared among all members of the [[Office of the JAG]], including the [[Directorate of Defence Counsel Services|http://www.forces.gc.ca/jag/military_justice/ddcs/default_e.asp]] and the [[Canadian Military Prosecution Service|http://www.forces.gc.ca/jag/military_justice/cmps/default_e.asp]].\n\n|!Why should you care?|\nThe protection of the ~Solicitor-Client Privilege is paramount in any law firm and legal office. In the [[Office of the JAG]], it has been recognized as one of the [[six IM Principles|Vision & Principles]] and one [[JAG IM Directive|JAG IM Directives]] specifically targets Conflicts of Interest in order to prevent them.\n\nTwo entities in the [[Office of the JAG]] enjoy a measured level of independence from the rest of the Office: the [[Directorate of Defence Counsel Services|http://www.forces.gc.ca/jag/military_justice/ddcs/default_e.asp]] and the [[Canadian Military Prosecution Service|http://www.forces.gc.ca/jag/military_justice/cmps/default_e.asp]]. Under Canadian criminal law, not only must Defence counsel be capable of safeguarding the ~Solicitor-Client Privilege between him and the client, but a reasonably informed member of the public must believe that reasonable steps have been taken to safeguard that privilege.\n\nFor that reason, special design considerations will influence how the [[CIMP]] will deploy its [[IT]] solutions.\n\nThese issues matter because:\n* Some information belonging to the case file should be entirely restricted to you (and to immediate colleagues if applicable); particularly in the case of the [[Directorate of Defence Counsel Services|http://www.forces.gc.ca/jag/military_justice/ddcs/default_e.asp]], security precautions should go beyond mere application level protection of the information by leveraging a distinct [[PB Network]]; and\n* Some information, on the other hand, should be shared freely, in particular [[material of precedential value|Material of precedential value]] with no ~Solicitor-Client Privilege attached to it.\n\n|!The Future|\n~LCol Irène Volage, within minutes of her arrival at the office, finds herself reviewing new items in the JAG [[Portal]]. She remembers well the concerns of her predecessor concerning the segregation of all Defence Counsel Services information from the larger JAG community. The ~Solicitor-Client Privilege had been, and continued to be; protected under the new information environment powered by the [[new tools at their disposal|IT]].\n\nDDCS had obtained a distinct and separate [[PB Network]]. That way, she was convinced that only DDCS staff could see DDCS files in the [[PCMS]] system. \n\nThat issue being settled, the fact still remained that DDCS was an essential part of the Military Justice system and of the [[Office of the JAG]]. As a result, [[DDCS|http://www.forces.gc.ca/jag/military_justice/ddcs/default_e.asp]] legal officers and support staff were able to connect, like all other JAG users, to the [[Portal]]. Considering that no information subject to the ~Solicitor-Client Privilege was ever posted on the Portal, it was really having the best of both worlds.\n\n~LCol Volage started her day by visiting the online Defence Counsel Services community. __She especially liked the increased presence of her Reserve legal officers__. She noticed that two court martial decisions had been posted in the “Military Justice Litigation” log and immediately followed the links to the decisions. An update to the “Rules of the Court” (Court of Appeal of Court Martials) also caught her interest, published in the same [[web log|Blogs]].\n\nConsidering the paucity of Military Justice doctrine, ~LCol Volage had been relieved to know that all JAG legal officers, including her legal officers, could share in the development and monitoring of the [[JAG Master Index]]. This Master Index, containing over 500 Military Justice [[wiki|Wikis]] pages, proved an invaluable starting point for research and significantly increased the productivity of newly appointed Defence Counsel. \n\nOf course, whenever very pointed and particularized research was completed by one of her lawyers in a pending case, common sense dictated to the lawyer in that case not to share the results of this research with the [[JAG Master Index]] – such research was properly managed within the “~DDCS-only” [[DRMS]] and [[PCMS]] systems.\n\n~LCol Volage and her team, by having access to the 1,200 legal topics of the [[JAG Master Index]] maintained in a [[Wiki|Wikis]] system, all six areas of Portal personalization (World, Government of Canada, National Defence, Office of the JAG, DDCS and her personal subscriptions and items of interest), hundreds of various online logs / communities / tagged resources; felt completely connected to the Office of the JAG, and yet, remained able to maintain the prescribed level of statutory independence from the rest of the Office of the JAG.\n\n|!Conclusion|\nThe Protection of the ~Solicitor-Client Privilege does not entail automatic rejection of [[Office of the JAG]] wide [[IT]] solutions. By a careful segmentation of JAG information holdgins into relevant and intuitive [[record groups|JAG Master File Plan]], it is possible to separate information belonging to case files and [[material of precedential value|Material of precedential value]] belonging to the [[JAG Master Index]], available in the [[JAG Portal|Portal]], in the form of a [[Wiki|Wikis]].\n\n''^^Next scenario:'' [[DJAG COS Scenario]] (you can also leave some [[Feedback]])^^
@@color(gray): ^^(previous scenario: [[DDCS Scenario]])^^@@\n|!Objective|\nThis scenario illustrates how communities and issues will foster better collaboration and individual use of the web. The scenario also illustrates how some of the [[technologies|IT]] deployed by the [[CIMP]] will enable the Office of the JAG to increase its online presence, and even its dialogue, with Canadians and others interested in military law.\n\n|!Why should you care?|\nLegal Officers that are also supervisors must have a way to easily monitor and share in, when necessary, the work of their subordinates. The [[Portal]] will implement the concept of //issues// in order to fulfil this requirement.\n\nOn a completely different level, the [[PB Network]], [[DRMS]] and [[PCMS]] are tools managed by and for legal officers and support staff in the [[Office of the JAG]]. However, the [[Portal]], by leveraging [[Web 2.0]] technologies such as [[Wikis]], [[Blogs]] and [[RSS]], has the potential of fundamentally altering the relationship between the [[Office of the JAG]], its members and members of the Public and increase military law awareness and knowledge throughout Canada.\n\nYou should care about such issues if:\n* The idea of a flexible online private space for each file you manage appeals to you, especially if you have the freedom to invite colleagues and supervisors to join such private spaces; and\n* You believe that a flourishing body of Canadian military law entails increased openess to the Public.\n\n|!The future|\nCol d’Auvent measured the progress accomplished: in less than ten years, a completely supportive information environment had gone from mere idea to complete fruition. It certainly made his job easier.\n\nHe appreciated that he could show off, to other National Defence Groups in Headquarters, the JAG [[Portal]]: completely bilingual, [[Common Look & Feel]] compliant with dynamic content customized in accordance with user categories ([[JAG & Deputies]] in his case). \n\nHe liked to start his day by a quick visit to the [[JAG & Deputies]] (closed) community, including a visit to the community forum in which the latest in greatest ideas of Col Jacques Clément, DJAG/Ops, were sure to be hotly debated.\n\nAfter, Col d’Auvent proceeded to one of his online “Issues”, namely, a virtual space he created for himself to park and monitor items related to “67A OS/OSS”. The file was complex and contained a lot of historical information. Several Training & Development Officers worked on it, and many legal officers too. He shared that issue with the supervising officer – the Director of Law for Training – and the responsible officer – the Training Development Officer. That issue space contained pertinent links to online resources, from the [[JAG Bookmarking System|Social Tagging]], including ADM(~HR-Civ) resources; a log of activities pertaining to that file and references to topical pages maintained by internal staff. \n\nFormal documents and key events related to that file were recorded in the [[PCMS]] and [[DRMS]] systems; the “Issue” space was more for day-to-day minor activities and served as a container for links to related resources.\n\nOne thing that Col d’Auteuil was very proud of: military law public feeds, offered to the general public, via [[RSS]]. On a case-by-case basis, over time, several feeds had been set-up to offer to the public the ability to subscribe to Military Law news. To date, the following channels had been made available: “Court Martials”, in which court decisions were posted for dissemination; “Recruitment”, containing the latest news on legal officer and supporting staff recruitment efforts; “News – Military Justice”, “News – Operational Law” and “News – Military Administrative Law”, three channels promoting the free flow of the latest developments and tagged resources in military law. Because these feeds were associated with corresponding [[web logs|Blogs]], capable of supporting comments and dialogue, the Office of the JAG had established itself as a credible and transparent promoter of military law throughout the world. \n\nThe JAG, ~MGen Peter J. Oleary, Q.C., fully endorsed this transparency and openness to the public. He felt confident that the [[new JAG information environment|Portal]] succeeded in unleashing and preserving the intellectual capital of the Office of the JAG.\n\n|!Conclusion|\nThe [[Web 2.0]] technologies deployed by the [[CIMP]] will not only enable legal officers and support staff to work in a more supportive information environment, as already experienced in a [[legal context elsewhere|Web 2.0 and the Legal Profession]], but the same technologies will also enable, on a case-by-case basis, [[JAG & Deputies]] to create new opportunities for improved communication with the Canadian public.\n\n''^^Next scenario:'' [[DLaw T Scenario]] (you can also leave some [[Feedback]])^^\n
Courses, course materials and course environments need to be standardized and optimized for reuse. Options range from [[Developing Reusable Learning Content|http://imbok.blogspot.com/2005/12/developing-reusable-learning-content.html]] to the adoption of Commercial and Off the Shelf end-to-end solutions. The [[CIMP]] recommends the latter, in particular, the adoption of the [[Desire2Learn|http://www.desire2learn.com/products/products_learning_platform.asp]] platform, inasmuch as it remains the solution chosen by [[Defence Learning Network|http://www.dnd.ca/hr/dln-rad/engraph/home_e.asp]], another National Defence [[capital project|Capital Projects]].\n\nBecause online training delivery is intricately linked with course material, the concept of "course environments" is useful. For an online course (distance learning), the course environment is composed of the online tools and the course materials. For classroom training, the course environment is composed of the classroom and of the same course materials.\n\nAs mentioned above, the [[CIMP]] recommends the [[Desire2Learn|http://www.desire2learn.com/products/products_learning_platform.asp]] platform offered by the [[Defence Learning Network|http://www.dnd.ca/hr/dln-rad/engraph/home_e.asp]] to address the distant learning requirement. For course materials, the need to continuously and efficiently update course materials is the same, whether the course is delivered online or in a classroom. \n\nIn order to optimize course materials efficient development, reuse, sharing and standardization, the [[CIMP]] recommends the following:\n* __All course materials managed by ~DLaw/T (except classified material) be migrated to [[DLN|http://www.dnd.ca/hr/dln-rad/engraph/home_e.asp]]__, after DLN has successfully deployed [[Desire2Learn|http://www.desire2learn.com/products/products_learning_platform.asp]]. This will promote the standardization, reusability and availability of all course materials in a structured and modular environment. It will also:\n** Significantly reduce the time required to develop new courses;\n** Provide a consistent environment in which standard roles (Student, Instructor, Moderator, etc.) are easily assumed online;\n** Provide a persistent environment in which past course information and aggregate statistics, for both the individual and the organization, can be derived;\n** Allow for the administration of online quizzes and tests;\n** Enable Deputy Judge Advocates throughout Canada and deployed legal officers to access quality and up-to-date course materials and even provide them with an online trainer role should they wish to locally promote some courses already approved by the ~Judge-Advocate General. Alternatively, the online material can also be used in a classroom setting.\n* __All source material used to develop the course materials be maintained in one unique location__: the [[JAG Master Index]], consisting of a [[Wiki|Wikis]]-type content management system. This will:\n** Enable the automatic and continuous update of online manuals, inasmuch these manuals consist in a Tables of Content linking to topics found elsewhere in the [[JAG Master Index]]. Public spliced feeds^^1^^ corresponding to each manual would regularly update people who prefer to use a printed version of the manuals;\n** Promote en environment in which [[Material of precedential value]] is at one and only one location - the [[JAG Master Index]]. The slight exception to this rule would be course materials, managed within the [[Defence Learning Network|http://www.dnd.ca/hr/dln-rad/engraph/home_e.asp]];\n* Training officers and legal officers responsible for the development and maintenance of course materials could simply thereafter subscribe via [[RSS]] feeds to topics in the [[JAG Master Index]] that have an impact on the course materials for which they are responsible. In addition, they will be able to subscribe to a variety of other [[RSS]] feeds as described in the [[User Scenarios]]. If a particular topic has not yet been developed for any given course, it should be developed in the [[JAG Master Index]], and relied upon for the course.\n\n^^@@color(gray): Note 1: spliced feeds are feeds in which content from several other feeds are combined into one feed. In the "manual" context, to the extent that such manual would consist in a collection of [[wiki|Wikis]] pages; feeds from all the topics (the [[wiki|Wikis]] pages) contained in the Table of Contents could be combined into one feed. By subscribing to the spliced feed, the user is automatically notified of changes to the manual, in real time.@@^^\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^\n
The Directorate of Law for Training, or "~DLaw/T", fulfills a unique role in the Office of the JAG by developing and maintaining training material for legal officers, the Canadian Forces, foreign militaries and also, to a limited extent, to civilian institutes.\n\nThe following is a non-exhaustive list of important drivers for this organization:\n* __Business drivers__:\n** Harmonize legal content taught throughout the Canadian Forces\n** Ensure that initiatives and requests are based on the needs of DND and the CF\n** Capture and develop the JAG network of contacts as legal officers are sent on courses\n** Improving links to foreign military institutions, conferences and workshops, doctrine centres, etc.\n* __Training drivers__:\n** Move away from paper-based training, currently consisting in several thick binders of materials given to legal officers on each course\n** Improving the course materials update process and cycle time\n** Offering an efficient distant learning capability\n** Improving the linkage between Officer Specifications (OS), Officer Specialy Specifications (OSS) and Course materials^^1^^\n** Improving the linkage between Lessons Learned and Course materials\n** Facilitating and making more efficient the process of creating new courses\n* __Legal drivers__:\n** Solidifying the linkage between current events and developments and their legal implications, on one hand; and all course materials and the [[Material of precedential value]] that is available and used by legal officers, on the other hand. This often occurs in operational contexts: a transfer of prisoner issue is researched (for example), the Office of the JAG takes position; how can the legal information available to all JAG lawyers be speedily updated and how can the relevant course materials also be quickly updated? More importantly, how can all these processes be, as much as possible, re-designed to occur seemlessly and naturally?\n** Positioning the web site as a privileged online legal resource to all JAG lawyers.\nIn ManageInfoEfficiently, solutions are presented on how the [[CIMP]] intends to respond to these drivers.\n\n@@color(gray): ^^Note 1: course materials are manuals, slides, other training aids, exams and exercises.^^@@\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
@@color(gray): ^^(previous scenario: [[DJAG COS Scenario]])^^@@\n|!Objective|\nThis scenario illustrates how legal events from a variety of settings (//e.g.// deployed legal officer, Deputy Judge Advocates on bases, etc.) can result in quick and efficient adjustments to [[DLaw T Course Materials]].\n\n|!Why should you care?|\nHave you taken one of the Legal Officer Intermediate Courses (LOIT)? Do you remember the big binders (several inches think) that you were given? And then, at some point after that (perhaps a few months or a few years even), were you deployed? At that point, aside from the prosaic concern of the bulk and weigth of the binders (!), did you wonder of the binders adequately reflected the current state of military law? What about legal officers about to take the courses - would they be taught the latest state of military law?\n\nHave you worked as a Deputy Judge Advocate on a base, and offered local training to units? Did you have to develop your own training aid and Course Training Plans?\n\nIf these issues preoccupy you, if you care about the quick dissemination of military law adjustments to [[Material of precedential value]] and [[course materials|DLaw T Course Materials]], read on!\n\n|!The future|\n~Lieutenant-Colonel Bob Tokes, new Director of the Military Law Center, nervously greeted the ~Judge-Advocate General, ~MGen O'Leary, Q.C., and the US Navy US ~Judge-Advocate General. ~MGen O'Leary had insisted on showing off the new capabilities of the Military Law Center, in particular, how quickly lessons learned from the deployed legal officers translated into changes to [[course materials|DLaw T Course Materials]].\n\n"Bob - fire up Jexium^^1^^ and describe to Admiral Khan our lessons learned cycle" - ~LCol Tokes obediently proceeded and launched the new DND browser, Firefox, and accessed the [[JAG Portal|Portal]].\n\n"Sir, as you can see, I'm now logged in. In this area you will see a collection of [[RSS]] feeds that I subscribe to. Many of these feeds are generated by [[web logs|Blogs]] regularly updated by our deployed legal officers, and several other feeds are from our [[JAG Master Index]] pages, hosted in a [[wiki|Wikis]]-type Content Management System for all our [[Material of precedential value]]. For example, here, you can see that I have 2 new posts from Capt Jeeves in Afghanistan and one new post from Maj Scoble in Sudan. By clicking on any of these posts I am taken to their [[web log|Blogs]], or blog, and I can see that their posts already generated some comments from fellow legal officers. This post from Capt Jeeves is interesting, because it describes a situation to which our legal officers are increasingly confronted in that area. Unfortunately, our training materials do not, currently, directly address these situations. I can also see that the topic //Transfer of Prisoners of War//, in the [[JAG Master Index]], has been amended by ~LCol Mindsharp - that makes sense because he is currently doing post-graduate studies in that area at Harvard University and regularly updates on [[Material of precedential value]] according to his research. \n\n"In both cases, my team and I make a determination if such changes warrant amending course materials. In these tow cases, the answer is yes. All I have to do now is to task one of my Majors, in this case, Major Bernadette, to amend the relevant course materials hosted in the [[Desire2Learn|http://www.desire2learn.com/products/products_learning_platform.asp]] platform hosted on our [[Defence Learning Network|http://www.dnd.ca/hr/dln-rad/engraph/home_e.asp]]. Access is immediate, online and from any location. In addition, all course materials is built on several reusable content learning chunks: by amending one such chunk of content, in this case, Transfer of Prisoners of War, all the courses in which this learning component is used will be automatically updated, even if a student takes the online course starting tomorrow.\n\n"Of course, human intervention is necessary in order to make several judgment calls, for example: do we need to change the Course Training Plan? Do we need to change any or several exams? Etc...\n\n"From the time a significant legal event occurs and is reported by any of our legal officers to the time we are in position to implement course material related changes, we usually count the number of days, not weeks or months. This has been made possible because all [[Material of precedential value]] used to build courses is now located in one place - the online [[wiki|Wikis]]-based [[JAG Master Index]]. In addition, all legal course materials used throughout the Canadian Forces is now also located in only one place - the [[Defence Learning Network|http://www.dnd.ca/hr/dln-rad/engraph/home_e.asp]]. With the rich set of [[RSS]] Feeds we subscribe to and the standing queries we have running against our custom [[Search Collections]], my team and I can efficiently and quickly translate any legal event into immediate changes to [[course materials|DLaw T Course Materials]]", Stokes concluded.\n\nAdmiral looked at ~MGen O'Leary and shrewdly asked: "So, you wanted to discuss an exchange position with our US Navy JAG School??"\n\n|!Conclusion|\n[[Developing Reusable Learning Content|http://imbok.blogspot.com/2005/12/developing-reusable-learning-content.html]] is a promising method of standardizing efficiently legal training across the Canadian Forces. In order to do so, the [[CIMP]] recommends the complete transfer of ~DLaw/T course materials to the [[Defence Learning Network|http://www.dnd.ca/hr/dln-rad/engraph/home_e.asp]] and to systematically create, develop and maitain all [[Material of precedential value]], including military law manuals, in the [[JAG Master Index]], leveraging the online [[wiki|Wikis]]-based Content Management System. The connection between legal events and military law changes, on one hand; and [[DLaw T Course Materials]] changes, on the other hand; will be enabled simply by training and legal officers monitoring the required [[RSS]] feeds.\n\n@@color(gray): ^^Note 1: "Jexium" is a fictitious name used here to depict the name of the [[Portal]] deliver by the [[CIMP]] to the [[Office of the JAG]].^^@@\n@@color(gray): ^^This is the last scenario. You can proceed to [[Web 2.0]]. Thoughts? Suggestions? Comments? You can leave some [[Feedback]].^^@@\n
The Office of the JAG currently has no electronic Document and Records Management capability ("DRMS"), as opposed, for example, to the Office of the DND/CF LA who is using Foremost and to several other Departmental Legal Services Units. This capability deficiency is critical for a legal office and can be efficiently solved with the recommended GC or DND platform for DRMS.
The //Defence Subject Classification and Disposition System//, or "DSCDS", is an Institution Specific Disposition Authority ("ISDA") - or Records Disposition Authority ("RDA") issued by the National Archivist to National Defence. Public Servants are authorized under the [[Library and Archives Act|http://laws.justice.gc.ca/en/l-7.7/text.html]] to dispose of corporate records at the end of their retention periods, //if// they have been properly constituted under and managed in accordance with the DSCDS.\n\nMost records in [[National Defence|http://www.forces.gc.ca/]] are managed under the DSCDS.
[[Home]]
@@color(gray): ^^(previous scenario: [[Counsel at DLaw/Admin Law|Counsel Scenario]])^^@@\n|!Objective|\nIn this scenario, we present:\n* The personalization levels and communities of the future [[JAG portal|Portal]];\n* The use of the [[Practice / Case Management System|PCMS]] as a complementary system to the [[JAG Portal|Portal]];\n* How [[Blogs]], in addition to solving the [[Email Overload]] problem (see [[previous scenario|Counsel Scenario]]), can be useful as operational logs, described in the scenario below as part of a private space in the [[Portal]];\n* How [[Wikis]] and [[Social Tagging]] help in organizing [[material of precedential value|Material of precedential value]] and other information; and\n* How all these technologies, when combined, effectively connect the deployed legal officer to the collective knowledge of colleagues //and// predecessors in the [[Office of the JAG]].\n\n|!Why should you care?|\nHave you been deployed as a legal officer? Did you feel empowered with online access to all [[material of precedential value|Material of precedential value]]? When routine Military Justice issues arise, you can answer from personal knowledge; but what happens when more complex legal issues arise?\n\nAs a solo deployed legal officer, you are the first line of legal advice and services in the field, responsible for Military Justice, Operational Law and Military Administrative Law, together known as "Military Law". Military law covers approximately 1,200 distinct legal topics. It is impossible for any given lawyer to be proficient on such a large array of legal topics. As a result, current deployed officers make extensive use of their contacts at JAG in Ottawa who, in turn, assign the question to the appropriate lawyer. Although conversations and email will remain possible - the objective of the [[CIMP]] is not to prevent lawyers from talking to each other! - there are more efficient ways to connect the deployed legal officer to leverage JAG collective knowledge.\n\nYou should care if:\n* Staying on top of events, news and information, while you are away, matters to you:\n** World\n** Government of Canada\n** National Defence / Canadian Forces\n** Office of the JAG\n** Directorate or Regional Office\n** Your own stuff\n* The next time you are deployed overseas, you want full access to all [[material of precedential value|Material of precedential value]] from your fingertips;\n* You want live connections with your colleagues at the Directorate of Law for Operations and other deployed legal officers; and\n* You want a simple way to capture your daily experience and events, in a way that makes it easy for your contacts to be immediately notified.\n\n|!The Future|\nIn 2008, Maj Larochelle has been sent to Afghanistan and tasked to open a legal office.\n\nAs Maj Larochelle fires up her laptop, she launches her internet browser and immediately finds herself at the home page of the [[JAG Portal|Portal]], designed in accordance with [[Common Look & Feel]] standards of the Government of Canada and completely bilingual – capable of switching back and forth from one language to another effortlessly. The [[Portal]] remembers her and has automatically logged her in. \n\nMaj Larochelle sees the usual “Welcome Mary” message and sees at a glance the number of unread items in six different areas: \n* World\n* Government of Canada\n* National Defence\n* Office of the JAG\n* Directorate of Law / Operations\n* Personal subscriptions and items of interest to her\nWhen she later checks her email, she only has 20 emails, specifically sent to her. There are no mass emails [[cluttering her inbox|Email Overload]], because mass dissemination emails have been routed to [[web logs|Blogs]] and automatically sorted by channel. \n\nBefore reading new items from the six areas described above, Maj Larochelle visits the online JAG “Deployed Legal Officers” community, accessible from her home page (because she is a member of that community). She posts a short message in the community forum, confirming her arrival and status. Members of ~DLaw/Ops routinely monitor this community. They are immediately notified of any queries from Maj Larochelle and can answer online, in the forum. In some cases, the query/answer dialogue benefits other deployed legal officers. \n\nAnother legal officer will replace Maj Larochelle in six months: she needs to maintain a good record of her activities on OP FUTURE. As per the applicable JAG Information Management Directives (JAG [[IMD|JAG IM Directives]]'s), she maintains all information related to the operation both in the JAG Practice / Case Management System ([[PCMS]]) and in a private virtual space, called an “Issue”, on the [[Portal]]. That virtual private space can be handed over from a legal officer to another. Other legal officers can be invited to join in the same space.\n\nThe [[PCMS]] allows Maj Larochelle to input into the system related parties to OP FUTURE, a chronology of legal events, corporate records associated with OP FUTURE (such as ROEREQU’s, ROEAUTH’s, etc.) and other key information. The [[PCMS]] can handle up to PROTECTED B (“PB”) information because the [[PCMS]] is exploited within an accredited and certified [[PB Network]]. The [[PCMS]] keeps her on track by helping her manage the operation as a “legal case”, with automatic, pre-configured multi-items docketing, ensuring consistency in the delivery of legal services throughout the Office of the JAG.\n\nHer virtual private space, created by herself, fulfills a different requirement. It contains no Protected B information. It does not duplicate the information found in the [[PCMS]]. That space allows her to maintain a diary of events and information, in the form of a log and published as a [[blog|Blogs]]. The Issue space contains a variety of resources subscribed to, enabling Maj Larochelle, for example, to be immediately notified when anyone updates operational law topics (found elsewhere on the site) or when news related to her operation break out. \n\nMaj Larochelle can also “park” in that space links to useful references, legal topics and other online resources whenever she uses the [[social tagging capability|Social Tagging]] of the portal. The Issue space can be shared by invitation and handed over to the next legal officer at the end of her six months tour.\n\nMaj Larochelle notices (because all deployed officers are automatically subscribed to all Operational Law updates) that a new operational law topic had been added to the [[JAG Master Index]], hosted online in a [[|Wiki System|Wikis]]: she accordingly follows the notification link, and proceeds to read the full update. Because Maj Larochelle has developed a strong background in operational law, she noticed that a small modification should be made to the new topic and initiates an online discussion on the [[wiki|Wikis]] page associated with that topic. Discussion pages are a standard feature of [[Wikis]]. \n\nFinally, Maj Larochelle visited several Afghan web sites for her personal education and found them interesting enough to tag them. By tagging them, she automatically made them available to the larger JAG community because the JAG Legal Information Portal includes a [[Corporate Bookmarking|Social Tagging]] capability. In addition, in order to improve the visibility of the resources she found, she created a feed on her Issue page related to OP FUTURE ensuring that all resources tagged with ~OP_FUTURE would automatically show up in her issue page. Her contact officer in ~DLaw/Ops subscribes to her OP FUTURE diary and tagged resources.\n\nWith such a supportive information environment, time zones really did not matter, mused Maj Larochelle ...\n\n|!Conclusion|\nMore effectively connecting deployed legal officers to the larger JAG community can be accomplished simply, by adopting a few [[FOSS]] [[Web 2.0]] technologies: [[Blogs]], [[Wikis]], [[Social Tagging]] within a simple [[Portal]]. These technologies will nicely complement the other two major JAG applications: [[DRMS]] and [[PCMS]].\n\n''^^Next scenario:'' [[DDCS Scenario]]^^
[[Drupal|http://drupal.org]] is a Free and Open Source Software solution for flexible web content management. \n\nThe latest version is [[4.7.0|http://drupal.org/drupal-4.7.0]]. The [[CIMP]] has already identified that five [[IT]] capabilities are needed by its client - the [[Office of the JAG]]:\n* [[Document and Records Management|DRMS]]\n* [[Practice and Case Management|PCMS]]\n* [[Protected|PB Network]] and [[Classified|Classified Network]] Networks, in which the previous two capabilities can be deployed and used\n* [[Web Content Management|Portal]]\nBecause the [[CIMP]] must assess current [[Trends & Opportunities]] as specified in the [[JIA]], we have found that an assessment of trends and opportunities in the web content management area points to [[research|http://del.icio.us/Fidelis1970/IMBOK+Web2.0+Trends]] showing that significant changes are underway in how people, communities, organizations, corporations and governments are using the web. These changes are generically described as [[Web 2.0]]. Web 2.0 also applies to the [[legal profession|Web 2.0 and the Legal Profession]]. \n\n[[Web 2.0]] is often experienced through new platforms and technologies for web content management: [[Ajax]], [[RSS]], [[Wikis]], [[Blogs]], [[Social Tagging]]. These platforms are, more often than not, [[mature and enterprise ready|http://imbok.blogspot.com/2006/05/book-review-open-source-for-enterprise.html]]. However, It is not practical, in an enterprise context, to have several distinct web content management solutions that are not interoperable. To solve this problem, some web content management solutions will incorporate, in one web based application, many web 2.0 features: [[Wikis]], [[Blogs]], [[Forums]], [[Comments]], [[RSS]], etc.\n\nOne such solution is [[Drupal]], a free and open source software that comes with a mature and vibrant support community and development cycle (as favourably commented upon in "[[Open Source for the enterprise: Managing Risks - Reaping Rewards|http://imbok.blogspot.com/2006/05/book-review-open-source-for-enterprise.html]]"). \n\nMore information on [[Drupal|http://drupal.org]] can be found here:\n* [[Drupal books|http://del.icio.us/Fidelis1970/Drupal+Books]]\n* [[Drupal Videocasts|http://drupal.org/videocasts]]\n* [[Other Drupal Resources|http://del.icio.us/Fidelis1970/IMBOK+Drupal]]
<!---\n| Name:|~TagglyTaggingEditTemplate |\n| Version:|1.1 (12-Jan-2006)|\n| Source:|http://simonbaird.com/mptw/#TagglyTaggingEditTemplate|\n| Purpose:|See TagglyTagging for more info|\n| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|\n--->\n<!--{{{-->\n<div class="toolbar" macro="toolbar +saveTiddler closeOthers cancelTiddler deleteTiddler"></div>\n<div class="title" macro="view title"></div>\n<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>\n<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>\n<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>\n<div class="editor" macro="edit text"></div>\n<br/>\n<!--}}}-->
The problem of email overload has a significant impact on legal officers and cannot be lightly dismissed. Several of these emails have normative value, for example, any CANFORGEN superceding by its content a DAOD, is, in effect, a directive. \n\nIn the case of a CANFORGEN superceding a directive likely to be relied upon under the Code of Service Discipline, charges could be laid against a member of the Canadian Forces if they disobey that directive, which has been superceded. The matter is therefore of paramount importance for legal officers to [[manage their information efficiently|ManageInfoEfficiently]], especially their email.\n\nTo alleviate email overload, the [[CIMP]] will recommend the use of subject-based [[Blogs]], a [[Web 2.0]] technology. All mass emails will be re-directed to these subject-based blogs and these blogs will be:\n* //Searchable// - both as part of [[Search Collections]] and as a web page with a search function\n* //Sorted// - by definition, each blog will be created and used for one topic and purpose only, therefore the sorting and categorization will occur at the source instead of having 300 personnel trying to organize this massive traffic themselves in different ways\n* //Archived// - in the sense that the availability of blog posts will go back farther than the email account creation date. Currently, legal officers and support staff start receiving emails whenever their email account is created. This does not allow them to efficiently go back in time and search. [[Blogs]] solve this problem.\n* //Syndicated// - [[RSS]] feeds will be associated with each blog, enabling mandatory (based on user category) and optional (based on user interest) subscription.\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
The JAG Information Architecture will be focused on delivering a legal information environment supportive of the day-to-day information needs and activities of management, legal officers and support staff, including performance measurement data collection for management and case management information for lawyers.
<<exportTiddlers inline>>
/***\n''Export Tiddlers Plugin for TiddlyWiki version 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#ExportTiddlersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen many people edit copies of the same TiddlyWiki document, the ability to easily copy and share these changes so they can then be redistributed to the entire group is very important. This ability is also very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\nExportTiddlersPlugin let you ''select and extract tiddlers from your ~TiddlyWiki documents and save them to a local file'' or a remote server (requires installation of compatible server-side scripting, still under development...). An interactive control panel lets you specify a destination, and then select which tiddlers to export. A convenient 'selection filter' helps you pick desired tiddlers by specifying a combination of modification dates, tags, or tiddler text to be matched or excluded. ''Tiddler data can be output as ~TiddlyWiki "storeArea ~DIVs" that can be imported into another ~TiddlyWiki or as ~RSS-compatible XML that can be published for RSS syndication.''\n\n!!!!!Inline interface (live)\n<<<\n<<exportTiddlers inline>>\n<<<\n!!!!!Usage\n<<<\nOptional "special tiddlers" used by this plugin:\n* SiteUrl^^\nURL for official server-published version of document being viewed\ndefault: //none//^^\n* SiteHost^^\nhost name/address for remote server (e.g., "www.server.com" or "192.168.1.27")\ndefault: //none//^^\n* SitePost^^\nremote path/filename for submitting changes (e.g., "/cgi-bin/submit.cgi")\ndefault: //none//^^\n* SiteParams^^\narguments (if any) for server-side receiving script\ndefault: //none//^^\n* SiteID^^\nusername or other authorization identifier for login-controlled access to remote server\ndefault: current TiddlyWiki username (e.g., "YourName")^^\n* SiteDate^^\nstored date/time stamp for most recent published version of document\ndefault: current document.modified value (i.e., the 'file date')^^\n<<<\n!!!!!Example\n<<<\n<<exportTiddlers>>\n<<<\n!!!!!Installation\n<<<\nImport (or copy/paste) the following tiddlers into your document:\n''ExportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < exportTiddlers > >" macro^^\n<<<\n!!!!!Revision History\n<<<\n''2006.02.12 [2.1.2]''^^\nadded var to unintended global 'tags' in matchTags(). Avoids FF1501 bug when filtering by tags. (based on report by TedPavlic)\n''2006.02.04 [2.1.1]''^^\nadded var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.02.02 [2.1.0]''^^\nAdded support for output of complete TiddlyWiki documents. Let's you use ExportTiddlers to generate 'starter' documents from selected tiddlers.^^\n''2006.01.21 [2.0.1]''^^\nDefer initial panel creation and only register a notification function when panel first is created\nin saveChanges 'hijack', create panel as needed. Note: if window.event is not available to identify the click location, the export panel is positioned relative to the 'tiddlerDisplay' element of the TW document.\n^^\n''2005.12.27 [2.0.0]''^^\nUpdate for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n^^\n''2005.12.24 [0.9.5]''^^\nMinor adjustments to CSS to force correct link colors regardless of TW stylesheet selection\n^^\n''2005.12.16 [0.9.4]''^^\nDynamically create/remove exportPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.\n^^\n''2005.11.15 [0.9.2]''^^\nadded non-Ajax post function to bypass javascript security restrictions on cross-domain I/O. Moved AJAX functions to separate tiddler (no longer needed here). Generalized HTTP server to support UnaWiki servers\n^^\n+++[previous releases...]\n''2005.11.08 [0.9.1]''^^\nmoved HTML, CSS and control initialization into exportInit() function and call from macro handler instead of at load time. This allows exportPanel to be placed within the same containing element as the "export tiddlers" button, so that relative positioning can be achieved.\n^^\n''2005.10.28 [0.9.0]''^^\nadded 'select opened tiddlers' feature\nBased on a suggestion by Geoff Slocock\n^^\n''2005.10.24 [0.8.3]''^^\nCorrected hijack of 'save changes' when using http:\n^^\n''2005.10.18 [0.8.2]''^^\nadded AJAX functions\n^^\n''2005.10.18 [0.8.1]''^^\nCorrected timezone handling when filtering for date ranges.\nImproved error checking/reporting for invalid filter values and filters that don't match any tiddlers.\nExporting localfile-to-localfile is working for IE and FF\nExporting server-to-localfile works in IE (after ActiveX warnings), but has security issues in FF\nCross-domain exporting (localfile/server-to-server) is under development\nCookies to remember filter settings - coming soon\nMore style tweaks, minor text changes and some assorted layout cleanup.\n^^\n''2005.10.17 [0.8.0]''^^\nFirst pre-release.\n^^\n''2005.10.16 [0.7.0]''^^\nfilter by tags\n^^\n''2005.10.15 [0.6.0]''^^\nfilter by title/text\n^^\n''2005.10.14 [0.5.0]''^^\nexport to local file (DIV or XML)\n^^\n''2005.10.14 [0.4.0]''^^\nfilter by start/end date\n^^\n''2005.10.13 [0.3.0]''^^\npanel interaction\n^^\n''2005.10.11 [0.2.0]''^^\npanel layout\n^^\n''2005.10.10 [0.1.0]''^^\ncode framework\n^^\n''2005.10.09 [0.0.0]''^^\ndevelopment started\n^^\n===\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // +++[version]\n//{{{\nversion.extensions.exportTiddlers = {major: 2, minor: 1, revision: 2, date: new Date(2006,2,12)};\n//}}}\n// //===\n\n// // +++[macro handler]\n//{{{\nconfig.macros.exportTiddlers = {\n label: "export tiddlers",\n prompt: "Copy selected tiddlers to an export document",\n datetimefmt: "0MM/0DD/YYYY 0hh:0mm:0ss" // for "filter date/time" edit fields\n};\n\nconfig.macros.exportTiddlers.handler = function(place,macroName,params) {\n if (params[0]!="inline")\n { createTiddlyButton(place,this.label,this.prompt,onClickExportMenu); return; }\n var panel=createExportPanel(place);\n panel.style.position="static";\n panel.style.display="block";\n}\n\nfunction createExportPanel(place) {\n var panel=document.getElementById("exportPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.exportTiddlers.css,"exportTiddlers");\n panel=createTiddlyElement(place,"span","exportPanel",null,null)\n panel.innerHTML=config.macros.exportTiddlers.html;\n exportShowPanel(document.location.protocol);\n exportInitFilter();\n refreshExportList(0);\n store.addNotification(null,refreshExportList); // refresh listbox after every tiddler change\n return panel;\n}\n\nfunction onClickExportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createExportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n// //===\n\n// // +++[Hijack saveChanges] diverts 'notFileUrlError' to display export control panel instead\n//{{{\nwindow.coreSaveChanges=window.saveChanges;\nwindow.saveChanges = function()\n{\n if (document.location.protocol=="file:") { coreSaveChanges(); return; }\n var e = window.event;\n var parent=e?resolveTarget(e).parentNode:document.body;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent) panel=createExportPanel(parent);\n exportShowPanel(document.location.protocol);\n if (parent==document.body) { panel.style.left="30%"; panel.style.top="30%"; }\n panel.style.display = "block" ;\n}\n//}}}\n// //===\n\n// // +++[IE needs explicit scoping] for functions called by browser events\n//{{{\nwindow.onClickExportMenu=onClickExportMenu;\nwindow.onClickExportButton=onClickExportButton;\nwindow.exportShowPanel=exportShowPanel;\nwindow.exportShowFilterFields=exportShowFilterFields;\nwindow.refreshExportList=refreshExportList;\n//}}}\n// //===\n\n// // +++[CSS] for floating export control panel\n//{{{\nconfig.macros.exportTiddlers.css = '\s\n#exportPanel {\s\n display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#exportPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#exportPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#exportPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#exportPanel .rad { width:auto; }\s\n#exportPanel .chk { width:auto; }\s\n#exportPanel .btn { width:auto; }\s\n#exportPanel .btn1 { width:98%; }\s\n#exportPanel .btn2 { width:48%; }\s\n#exportPanel .btn3 { width:32%; }\s\n#exportPanel .btn4 { width:24%; }\s\n#exportPanel .btn5 { width:19%; }\s\n';\n//}}}\n// //===\n\n// // +++[HTML] for export control panel interface\n//{{{\nconfig.macros.exportTiddlers.html = '\s\n<!-- output target and format -->\s\n<table cellpadding="0" cellspacing="0"><tr><td width=50%>\s\n export to\s\n <select size=1 id="exportTo" onchange="exportShowPanel(this.value);">\s\n <option value="file:" SELECTED>this computer</option>\s\n <option value="http:">web server (http)</option>\s\n <option value="https:">secure web server (https)</option>\s\n <option value="ftp:">file server (ftp)</option>\s\n </select>\s\n</td><td width=50%>\s\n output format\s\n <select id="exportFormat" size=1>\s\n <option value="DIV">TiddlyWiki export file</option>\s\n <option value="TW">TiddlyWiki document</option>\s\n <option value="XML">RSS feed (XML)</option>\s\n </select>\s\n</td></tr></table>\s\n\s\n<!-- export to local file -->\s\n<div id="exportLocalPanel" style="margin-bottom:5px;margin-top:5px;">\s\nlocal path/filename<br>\s\n<input type="file" id="exportFilename" size=56 style="width:100%"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to http server -->\s\n<div id="exportHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\ndocument URL<br>\s\n<input type="text" id="exportHTTPSiteURL" onfocus="this.select()"><br>\s\nserver script / parameters<br>\s\n<input type="text" id="exportHTTPServerURL" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to ftp server -->\s\n<div id="exportFTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\n<table cellpadding="0" cellspacing="0" width="33%"><tr valign="top"><td>\s\n host server<br>\s\n <input type="text" id="exportFTPHost" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n username<br>\s\n <input type="text" id="exportFTPID" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n password<br>\s\n <input type="password" id="exportFTPPW" onfocus="this.select()"><br>\s\n</td></tr></table>\s\nFTP path/filename<br>\s\n<input type="text" id="exportFTPFilename" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- list of tiddlers -->\s\n<table><tr align="left"><td>\s\n select:\s\n <a href="JavaScript:;" id="exportSelectAll"\s\n onclick="onClickExportButton(this)" title="select all tiddlers">\s\n all </a>\s\n <a href="JavaScript:;" id="exportSelectChanges"\s\n onclick="onClickExportButton(this)" title="select tiddlers changed since last save">\s\n changes </a> \s\n <a href="JavaScript:;" id="exportSelectOpened"\s\n onclick="onClickExportButton(this)" title="select tiddlers currently being displayed">\s\n opened </a> \s\n <a href="JavaScript:;" id="exportToggleFilter"\s\n onclick="onClickExportButton(this)" title="show/hide selection filter">\s\n filter </a> \s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportListSmaller"\s\n onclick="onClickExportButton(this)" title="reduce list size">\s\n – </a>\s\n <a href="JavaScript:;" id="exportListLarger"\s\n onclick="onClickExportButton(this)" title="increase list size">\s\n + </a>\s\n</td></tr></table>\s\n<select id="exportList" multiple size="10" style="margin-bottom:5px;"\s\n onchange="refreshExportList(this.selectedIndex)">\s\n</select><br>\s\n\s\n<!-- selection filter -->\s\n<div id="exportFilterPanel" style="display:none">\s\n<table><tr align="left"><td>\s\n selection filter\s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportHideFilter"\s\n onclick="onClickExportButton(this)" title="hide selection filter">hide</a>\s\n</td></tr></table>\s\n<div class="box">\s\n<input type="checkbox" class="chk" id="exportFilterStart" value="1"\s\n onclick="exportShowFilterFields(this)"> starting date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterStartBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportStartDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterStartBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id="exportFilterEnd" value="1"\s\n onclick="exportShowFilterFields(this)"> ending date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterEndBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportEndDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterEndBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id=exportFilterTags value="1"\s\n onclick="exportShowFilterFields(this)"> match tags<br>\s\n<input type="text" id="exportTags" onfocus="this.select()">\s\n<input type="checkbox" class="chk" id=exportFilterText value="1"\s\n onclick="exportShowFilterFields(this)"> match titles/tiddler text<br>\s\n<input type="text" id="exportText" onfocus="this.select()">\s\n</div> <!--box-->\s\n</div> <!--panel-->\s\n\s\n<!-- action buttons -->\s\n<div style="text-align:center">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportFilter" value="apply filter">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportStart" value="export tiddlers">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportClose" value="close">\s\n</div><!--center-->\s\n';\n//}}}\n// //===\n\n// // +++[initialize interface]>\n// // +++[exportShowPanel(which)]\n//{{{\nfunction exportShowPanel(which) {\n var index=0; var panel='exportLocalPanel';\n switch (which) {\n case 'file:':\n case undefined:\n index=0; panel='exportLocalPanel'; break;\n case 'http:':\n index=1; panel='exportHTTPPanel'; break;\n case 'https:':\n index=2; panel='exportHTTPPanel'; break;\n case 'ftp:':\n index=3; panel='exportFTPPanel'; break;\n default:\n alert("Sorry, export to "+which+" is not yet available");\n break;\n }\n exportInitPanel(which);\n document.getElementById('exportTo').selectedIndex=index;\n document.getElementById('exportLocalPanel').style.display='none';\n document.getElementById('exportHTTPPanel').style.display='none';\n document.getElementById('exportFTPPanel').style.display='none';\n document.getElementById(panel).style.display='block';\n}\n//}}}\n// //===\n\n// // +++[exportInitPanel(which)]\n//{{{\nfunction exportInitPanel(which) {\n switch (which) {\n case "file:": // LOCAL EXPORT PANEL: file/path:\n // ** no init - security issues in IE **\n break;\n case "http:": // WEB EXPORT PANEL\n case "https:": // SECURE WEB EXPORT PANEL\n // url\n var siteURL=store.getTiddlerText("SiteUrl");\n if (store.tiddlerExists("unawiki_download")) {\n var theURL=store.getTiddlerText("unawiki_download");\n theURL=theURL.replace(/\s[\s[download\s|/,'').replace(/\s]\s]/,'');\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n siteURL=which+"//"+theHost+theURL\n }\n if (!siteURL) siteURL="SiteUrl";\n document.getElementById("exportHTTPSiteURL").value=siteURL;;\n // server script/params\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n // get POST\n var title=(store.tiddlerExists("unawiki_post"))?"unawiki_post":"SitePost";\n var thePost=store.getTiddlerText(title);\n if (!thePost || !thePost.length) thePost="/"+title;\n // get PARAMS\n var title=(store.tiddlerExists("unawiki_params"))?"unawiki_params":"SiteParams";\n var theParams=store.getTiddlerText(title);\n if (!theParams|| !theParams.length) theParams=title;\n var serverURL = which+"//"+theHost+thePost+"?"+theParams;\n document.getElementById("exportHTTPServerURL").value=serverURL;\n break;\n case "ftp:": // FTP EXPORT PANEL\n // host\n var siteHost=store.getTiddlerText("SiteHost");\n if (!siteHost || !siteHost.length) siteHost=document.location.host;\n if (!siteHost || !siteHost.length) siteHost="SiteHost";\n document.getElementById("exportFTPHost").value=siteHost;\n // username\n var siteID=store.getTiddlerText("SiteID");\n if (!siteID || !siteID.length) siteID=config.options.txtUserName;\n document.getElementById("exportFTPID").value=siteID;\n // password\n document.getElementById("exportFTPPW").value="";\n // file/path\n document.getElementById("exportFTPFilename").value="";\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[exportInitFilter()]\n//{{{\nfunction exportInitFilter() {\n // TBD: persistent settings via local cookies\n // start date\n document.getElementById("exportFilterStart").checked=false;\n document.getElementById("exportStartDate").value="";\n // end date\n document.getElementById("exportFilterEnd").checked=false;\n document.getElementById("exportEndDate").value="";\n // tags\n document.getElementById("exportFilterTags").checked=false;\n document.getElementById("exportTags").value="not excludeExport";\n // text\n document.getElementById("exportFilterText").checked=false;\n document.getElementById("exportText").value="";\n // show/hide filter input fields\n exportShowFilterFields();\n}\n//}}}\n// //===\n\n// // +++[exportShowFilterFields(which)]\n//{{{\nfunction exportShowFilterFields(which) {\n var show;\n\n show=document.getElementById('exportFilterStart').checked;\n document.getElementById('exportFilterStartBy').style.display=show?"block":"none";\n document.getElementById('exportStartDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterStartBy').value;\n document.getElementById('exportStartDate').value\n =getFilterDate(val,'exportStartDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterStartBy') && (val=='other'))\n document.getElementById('exportStartDate').focus();\n\n show=document.getElementById('exportFilterEnd').checked;\n document.getElementById('exportFilterEndBy').style.display=show?"block":"none";\n document.getElementById('exportEndDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterEndBy').value;\n document.getElementById('exportEndDate').value\n =getFilterDate(val,'exportEndDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterEndBy') && (val=='other'))\n document.getElementById('exportEndDate').focus();\n\n show=document.getElementById('exportFilterTags').checked;\n document.getElementById('exportTags').style.display=show?"block":"none";\n\n show=document.getElementById('exportFilterText').checked;\n document.getElementById('exportText').style.display=show?"block":"none";\n}\n//}}}\n// //===\n// //===\n\n// // +++[onClickExportButton(which): control interactions]\n//{{{\nfunction onClickExportButton(which)\n{\n // DEBUG alert(which.id);\n var theList=document.getElementById('exportList'); if (!theList) return;\n var count = 0;\n var total = store.getTiddlers('title').length;\n switch (which.id)\n {\n case 'exportFilter':\n count=filterExportList();\n var panel=document.getElementById('exportFilterPanel');\n if (count==-1) { panel.style.display='block'; break; }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage("filtered "+theList.options[0].text);\n if (count==0) { alert("No tiddlers were selected"); panel.style.display='block'; }\n break;\n case 'exportStart':\n exportTiddlers();\n break;\n case 'exportHideFilter':\n case 'exportToggleFilter':\n var panel=document.getElementById('exportFilterPanel')\n panel.style.display=(panel.style.display=='block')?'none':'block';\n break;\n case 'exportSelectChanges':\n var lastmod=new Date(document.lastModified);\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;\n theList.options[t].selected=(tiddler.modified>lastmod);\n count += (tiddler.modified>lastmod)?1:0;\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no unsaved changes");\n break;\n case 'exportSelectAll':\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count += 1;\n }\n theList.options[0].text=formatExportListHeader(count,count);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n break;\n case 'exportSelectOpened':\n for (var t = 0; t < theList.options.length; t++) theList.options[t].selected=false;\n var tiddlerDisplay = document.getElementById("tiddlerDisplay");\n for (var t=0;t<tiddlerDisplay.childNodes.length;t++) {\n var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);\n for (var i = 0; i < theList.options.length; i++) {\n if (theList.options[i].value!=tiddler) continue;\n theList.options[i].selected=true; count++; break;\n }\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no tiddlers currently opened");\n break;\n case 'exportListSmaller': // decrease current listbox size\n var min=5;\n theList.size-=(theList.size>min)?1:0;\n break;\n case 'exportListLarger': // increase current listbox size\n var max=(theList.options.length>25)?theList.options.length:25;\n theList.size+=(theList.size<max)?1:0;\n break;\n case 'exportClose':\n document.getElementById('exportPanel').style.display='none';\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[list display]\n//{{{\nfunction formatExportListHeader(count,total)\n{\n var txt=total+' tiddler'+((total!=1)?'s':'')+" - ";\n txt += (count==0)?"none":(count==total)?"all":count;\n txt += " selected for export";\n return txt;\n}\n\nfunction refreshExportList(selectedIndex)\n{\n var theList = document.getElementById("exportList");\n var sort;\n if (!theList) return;\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) sort='modified';\n if (selectedIndex==1) sort='title';\n if (selectedIndex==2) sort='modified';\n if (selectedIndex==3) sort='modifier';\n\n // get the alphasorted list of tiddlers\n var tiddlers = store.getTiddlers('title');\n // unselect headings and count number of tiddlers actually selected\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n if (theList.options[i].value=="") theList.options[i].selected=false;\n count+=theList.options[i].selected?1:0;\n }\n // disable "export" button if no tiddlers selected\n document.getElementById("exportStart").disabled=(count==0);\n // update listbox heading to show selection count\n if (theList.options.length)\n theList.options[0].text=formatExportListHeader(count,tiddlers.length);\n\n // if a [command] item, reload list... otherwise, no further refresh needed\n if (selectedIndex>3) return;\n\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=\n new Option(formatExportListHeader(0,tiddlers.length), "",false,false);\n theList.options[i++]=\n new Option(((sort=="title" )?">":indent)+' [by title]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modified")?">":indent)+' [by date]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modifier")?">":indent)+' [by author]', "",false,false);\n // output the tiddler list\n switch(sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modifier":\n case "modified":\n var tiddlers = store.getTiddlers(sort);\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++)\n {\n var tiddler = tiddlers[t];\n var theSection = "";\n if (sort=="modified") theSection=tiddler.modified.toLocaleDateString();\n if (sort=="modifier") theSection=tiddler.modifier;\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n}\n//}}}\n// //===\n\n// // +++[list filtering]\n//{{{\nfunction getFilterDate(val,id)\n{\n var result=0;\n switch (val) {\n case 'site':\n var timestamp=store.getTiddlerText("SiteDate");\n if (!timestamp) timestamp=document.lastModified;\n result=new Date(timestamp);\n break;\n case 'file':\n result=new Date(document.lastModified);\n break;\n case 'other':\n result=new Date(document.getElementById(id).value);\n break;\n default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31\n var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;\n var oneday=86400000;\n if (id=='exportStartDate')\n result=new Date((Math.floor(now/oneday)-val)*oneday+tz);\n else\n result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);\n break;\n }\n // DEBUG alert('getFilterDate('+val+','+id+')=='+result+"\snnow="+now);\n return result;\n}\n\nfunction filterExportList()\n{\n var theList = document.getElementById("exportList"); if (!theList) return -1;\n\n var filterStart=document.getElementById("exportFilterStart").checked;\n var val=document.getElementById("exportFilterStartBy").value;\n var startDate=getFilterDate(val,'exportStartDate');\n\n var filterEnd=document.getElementById("exportFilterEnd").checked;\n var val=document.getElementById("exportFilterEndBy").value;\n var endDate=getFilterDate(val,'exportEndDate');\n\n var filterTags=document.getElementById("exportFilterTags").checked;\n var tags=document.getElementById("exportTags").value;\n\n var filterText=document.getElementById("exportFilterText").checked;\n var text=document.getElementById("exportText").value;\n\n if (!(filterStart||filterEnd||filterTags||filterText)) {\n alert("Please set the selection filter");\n document.getElementById('exportFilterPanel').style.display="block";\n return -1;\n }\n if (filterStart&&filterEnd&&(startDate>endDate)) {\n var msg="starting date/time:\sn"\n msg+=startDate.toLocaleString()+"\sn";\n msg+="is later than ending date/time:\sn"\n msg+=endDate.toLocaleString()\n alert(msg);\n return -1;\n }\n\n // scan list and select tiddlers that match all applicable criteria\n var total=0;\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-tiddler list items (section headings)\n var opt=theList.options[i]; if (opt.value=="") continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var tiddler=store.getTiddler(opt.value); if (!tiddler) continue; \n var sel=true;\n if ( (filterStart && tiddler.modified<startDate)\n || (filterEnd && tiddler.modified>endDate)\n || (filterTags && !matchTags(tiddler,tags))\n || (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))\n sel=false;\n opt.selected=sel;\n count+=sel?1:0;\n total++;\n }\n return count;\n}\n//}}}\n\n//{{{\nfunction matchTags(tiddler,cond)\n{\n if (!cond||!cond.trim().length) return false;\n\n // build a regex of all tags as a big-old regex that \n // OR's the tags together (tag1|tag2|tag3...) in length order\n var tgs = store.getTags();\n if ( tgs.length == 0 ) return results ;\n var tags = tgs.sort( function(a,b){return (a[0].length<b[0].length)-(a[0].length>b[0].length);});\n var exp = "(" + tags.join("|") + ")" ;\n exp = exp.replace( /(,[\sd]+)/g, "" ) ;\n var regex = new RegExp( exp, "ig" );\n\n // build a string such that an expression that looks like this: tag1 AND tag2 OR NOT tag3\n // turns into : /tag1/.test(...) && /tag2/.test(...) || ! /tag2/.test(...)\n cond = cond.replace( regex, "/$1\s\s|/.test(tiddlerTags)" );\n cond = cond.replace( /\ssand\ss/ig, " && " ) ;\n cond = cond.replace( /\ssor\ss/ig, " || " ) ;\n cond = cond.replace( /\ss?not\ss/ig, " ! " ) ;\n\n // if a boolean uses a tag that doesn't exist - it will get left alone \n // (we only turn existing tags into actual tests).\n // replace anything that wasn't found as a tag, AND, OR, or NOT with the string "false"\n // if the tag doesn't exist then /tag/.test(...) will always return false.\n cond = cond.replace( /(\ss|^)+[^\s/\s|&!][^\ss]*/g, "false" ) ;\n\n // make a string of the tags in the tiddler and eval the 'cond' string against that string \n // if it's TRUE then the tiddler qualifies!\n var tiddlerTags = (tiddler.tags?tiddler.tags.join("|"):"")+"|" ;\n try { if ( eval( cond ) ) return true; }\n catch( e ) { displayMessage("Error in tag filter '" + e + "'" ); }\n return false;\n}\n//}}}\n// //===\n\n// // +++[output data formatting]>\n// // +++[exportHeader(format)]\n//{{{\nfunction exportHeader(format)\n{\n switch (format) {\n case "TW": return exportTWHeader();\n case "DIV": return exportDIVHeader();\n case "XML": return exportXMLHeader();\n }\n}\n//}}}\n// //===\n\n// // +++[exportFooter(format)]\n//{{{\nfunction exportFooter(format)\n{\n switch (format) {\n case "TW": return exportDIVFooter();\n case "DIV": return exportDIVFooter();\n case "XML": return exportXMLFooter();\n }\n}\n//}}}\n// //===\n\n// // +++[exportTWHeader()]\n//{{{\nfunction exportTWHeader()\n{\n // Get the URL of the document\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if(originalPath.substr(0,5) != "file:")\n { alert(config.messages.notFileUrlError); return; }\n // Remove any location part of the URL\n var hashPos = originalPath.indexOf("#"); if(hashPos != -1) originalPath = originalPath.substr(0,hashPos);\n // Convert to a native file format assuming\n // "file:///x:/path/path/path..." - pc local file --> "x:\spath\spath\spath..."\n // "file://///server/share/path/path/path..." - FireFox pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n // "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."\n // "file://server/share/path/path/path..." - pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n var localPath;\n if(originalPath.charAt(9) == ":") // pc local file\n localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file://///") == 0) // FireFox pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file:///") == 0) // mac/unix local file\n localPath = unescape(originalPath.substr(7));\n else if(originalPath.indexOf("file:/") == 0) // mac/unix local file\n localPath = unescape(originalPath.substr(5));\n else // pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\s\s");\n // Load the original file\n var original = loadFile(localPath);\n if(original == null)\n { alert(config.messages.cantSaveError); return; }\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n { alert(config.messages.invalidFileError.format([localPath])); return; }\n return original.substr(0,posOpeningDiv+startSaveArea.length)\n}\n//}}}\n// //===\n\n// // +++[exportDIVHeader()]\n//{{{\nfunction exportDIVHeader()\n{\n var out=[];\n var now = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n var title = wikifyPlain("SiteTitle").htmlEncode();\n var subtitle = wikifyPlain("SiteSubtitle").htmlEncode();\n var user = config.options.txtUserName.htmlEncode();\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<html><body>");\n out.push("<style type=\s"text/css\s">");\n out.push("#storeArea {display:block;margin:1em;}");\n out.push("#storeArea div");\n out.push("{padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}");\n out.push("#javascriptWarning");\n out.push("{width:100%;text-align:left;background-color:#eeeeee;padding:1em;}");\n out.push("</style>");\n out.push("<div id=\s"javascriptWarning\s">");\n out.push("TiddlyWiki export file<br>");\n out.push("Source: <b>"+document.location+"</b><br>");\n out.push("Title: <b>"+title+"</b><br>");\n out.push("Subtitle: <b>"+subtitle+"</b><br>");\n out.push("Created: <b>"+now.toLocaleString()+"</b> by <b>"+user+"</b><br>");\n out.push("TiddlyWiki "+twver+" / "+"ExportTiddlersPlugin "+pver+"<br>");\n out.push("</div>");\n out.push("<div id=\s"storeArea\s">");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportDIVFooter()]\n//{{{\nfunction exportDIVFooter()\n{\n var out=[];\n out.push("</div></body></html>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLHeader()]\n//{{{\nfunction exportXMLHeader()\n{\n var out=[];\n var now = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n var title = wikifyPlain("SiteTitle").htmlEncode();\n var subtitle = wikifyPlain("SiteSubtitle").htmlEncode();\n var user = config.options.txtUserName.htmlEncode();\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<" + "?xml version=\s"1.0\s"?" + ">");\n out.push("<rss version=\s"2.0\s">");\n out.push("<channel>");\n out.push("<title>" + title + "</title>");\n if(u) out.push("<link>" + u.htmlEncode() + "</link>");\n out.push("<description>" + subtitle + "</description>");\n out.push("<language>en-us</language>");\n out.push("<copyright>Copyright " + now.getFullYear() + " " + user + "</copyright>");\n out.push("<pubDate>" + now.toGMTString() + "</pubDate>");\n out.push("<lastBuildDate>" + now.toGMTString() + "</lastBuildDate>");\n out.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");\n out.push("<generator>TiddlyWiki "+twver+" plus ExportTiddlersPlugin "+pver+"</generator>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLFooter()]\n//{{{\nfunction exportXMLFooter()\n{\n var out=[];\n out.push("</channel></rss>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportData()]\n//{{{\nfunction exportData(theList,theFormat)\n{\n // scan export listbox and collect DIVs or XML for selected tiddler content\n var out=[];\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-selected items and section headings\n var opt=theList.options[i]; if (!opt.selected||(opt.value=="")) continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var thisTiddler=store.getTiddler(opt.value); if (!thisTiddler) continue; \n if (theFormat=="TW") out.push(thisTiddler.saveToDiv());\n if (theFormat=="DIV") out.push(thisTiddler.title+"\sn"+thisTiddler.saveToDiv());\n if (theFormat=="XML") out.push(thisTiddler.saveToRss());\n }\n return out;\n}\n//}}}\n// //===\n// //===\n\n// // +++[exportTiddlers(): output selected data to local or server]\n//{{{\nfunction exportTiddlers()\n{\n var theList = document.getElementById("exportList"); if (!theList) return;\n\n // get the export settings\n var theProtocol = document.getElementById("exportTo").value;\n var theFormat = document.getElementById("exportFormat").value;\n\n // assemble output: header + tiddlers + footer\n var theData=exportData(theList,theFormat);\n var count=theData.length;\n var out=[]; var txt=out.concat(exportHeader(theFormat),theData,exportFooter(theFormat)).join("\sn");\n var msg="";\n switch (theProtocol) {\n case "file:":\n var theTarget = document.getElementById("exportFilename").value.trim();\n if (!theTarget.length) msg = "A local path/filename is required\sn";\n if (!msg && saveFile(theTarget,txt))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to local file";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "http:":\n case "https:":\n var theTarget = document.getElementById("exportHTTPServerURL").value.trim();\n if (!theTarget.length) msg = "A server URL is required\sn";\n if (!msg && exportPost(theTarget+encodeURIComponent(txt)))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to "+theProtocol+" server";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "ftp:":\n default:\n msg="Sorry, export to "+theLocation+" is not yet available";\n break;\n }\n clearMessage(); displayMessage(msg,theTarget);\n}\n//}}}\n// //===\n\n// // +++[exportPost(url): cross-domain post] uses hidden iframe to submit url and capture responses\n//{{{\nfunction exportPost(url)\n{\n var f=document.getElementById("exportFrame"); if (f) document.body.removeChild(f);\n f=document.createElement("iframe"); f.id="exportFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n d.location.replace(url);\n return true;\n}\n//}}}\n// //===\n
As defined in Wikipedia:\n<<<\nFree and Open Source Software, also F/OSS or FOSS, is software which is liberally licensed to grant the right of users to study, change, and improve its design through the availability of its source code. F/OSS is generally synonymous with free software and open source software, and describes the same licenses, culture, and development models.\n<<<\n[[Treasury Board Secretariat|http://www.tbs-sct.gc.ca/]] has [[mandated|http://www.tbs-sct.gc.ca/fap-paf/oss-ll/foss-llo/foss-llo01_e.asp]] federal Departments and Agencies to explicitly consider FOSS alternatives when procuring [[IT]] solutions.\n\nIf you are interested to read more on Open Source Software, please see [[Open Source for the enterprise: Managing Risks - Reaping Rewards|http://imbok.blogspot.com/2006/05/book-review-open-source-for-enterprise.html]].\n\n
Please use this form to provide feedback on this discussion paper:\n<HTML><iframe height="400" width="100%" name="zohoform34587" frameborder="0" scrolling="no" src="http://www.zohocreator.com/form/34587/"></iframe></HTML>\nFeedback already provided:\n<HTML><iframe height="400" width="100%" name="zohoview34600" frameborder="0" scrolling="yes" src="http://www.zohocreator.com/view/34600/"></iframe></HTML>
The adoption of a File Folder Convention is one aspect covered in [[Local Implementation Plans]].\n\nWhen the new [[JAG IM Directives]] will come into effect, the following convention will be used to structure and name electronic folders, until such time has the [[CIMP]] has delivered all [[IT]] capabilities.\n\nInformation in the [[Office of the JAG]] is to be organized in three groups: Client files (or case files), Legal Reference files and Administrative files. Each group corresponds to a records group as described in [[Recorded Information]] and the [[JAG Master File Plan]].\n\nBecause the [[Office of the JAG]] needs to re-organize its information prior to the introduction of the new [[IT]] capabilities delivered by the [[CIMP]], the interim environment, describing new information management practices, will be described in the new [[JAG IM Directives]] and their application thereof clearly explained in [[Local Implementation Plans]]. [[Local Implementation Plans]] will be explained and presented at the [[RVG Retreat - June 06]]. One aspect of this reorganization consists in organizing file folders and shared directories.\n\nThe reorganization of file folders takes into account the following principles:\n* Wherever appropriate and subject to the need-to-know principle, information sharing should be enabled by extending maximum access to shared directories and folders;\n* Law is not, by its nature, classified or protected. The application of law to any given set of facts may result in a classified or protected legal opinion, such opinions are managed in client (or case) files. However, [[Material of precedential value]] managed in the [[JAG Master Index]] shall consist only in legal information that is not classified nor protected. Therefore, a directory structure available to all legal officers throughout the [[Office of the JAG]], structured as per the [[JAG Master Index]], will be available until such time as the [[JAG Master Index]] is transferred to the [[Portal]] (probably enabled by [[Drupal]]) and managed online;\n* For client and case files, in many cases, several directorates need access to and work on the same cases. This commonality of practice results in "practice clusters", for example, Operational Law regrouping ~DLaw/Ops, ~DLaw/I and ~DLaw/I&IO. A shared directory will be available to such clusters, until such time as case files are managed in the new [[Practice and Case Managements System|PCMS]] to be delivered by the [[CIMP]];\n* Administrative Files are typically organization centric: per directorate, regional office, function (finance / HR / Business Management / etc), therefore administrative files should be managed in organization centric shared directories.\n__These principles and assumptions result in the following conventions__:\n* ''Legal Reference Files''. There will be a ~JAG-wide shared directory, accessible by all legal officers connected to the DWAN from Windows Explorer, called the [[JAG Master Index]] and containing the following major directories (sub-folders and sub-sub-folders to be organized in accordance with the [[JAG Master Index]]):\n** 01 - Military Law (general)\n** 02 - Military Justice\n** 03 - Operational Law\n** 04 - Military Administrative Law\n** 05 - Other Areas of Practice\n** 06 - Administrative Topics\n** 07 - Reference Material\n* ''Administrative Files''. All directorates, regional offices and other offices will each maintain a shared directory for their administrative files (administrative files are "files needed to run the office" - budget, finances, procurement, etc)\n* ''Client Files''. Client and case files will benefit from being managed from the following clusters:\n** The Directorate of Counsel Services (DDCS) and the Canadian Military Prosecution Service (CMPS) will each maintain and use a directory structure to manage their client files, for their internal use only, structured as follows:\n*** Client Files\n**** (client identifier as per approved [[Local Implementation Plan|Local Implementation Plans]])\n***** (matter identifier as per approved [[Local Implementation Plan|Local Implementation Plans]]))\n****** Matter sub-folders in accordance with the Court Martial [[Case Template|Case Templates]]\n***** Matter 2\n**** (another client identifier)\n**** (etc)\n** Ops Cluster (including^^1^^ DJAG/Ops, ~DLaw/I, ~DLaw/Ops and ~DLaw/I&IO) will maintain and use a shared directory structure for the management of their case files^^2^^, structured as described above with the necessary adaptations (//i.e.// using an Operations [[Case Template|Case Templates]] instead of a Court Martial [[Case Template|Case Templates]]\n** Military Justice Cluster (including^^1^^ ~DLaw/MJP&R): //ibid.//\n** Military Administrative Law CLuster (including^^1^^ ~DLaw/HR, ~DLaw/Admin Law, Compensations & Benefits): //ibid.//\n\n^^@@color(gray): Note 1: "Including" means that other entities / groups / individuals may be granted access to the shared directory, as prescribed by [[JAG & Deputies]]. For example, the SA JAG office could be given access to several clusters, LRS could be given access to the Military Justice Cluster or a subset thereof dealing with legislative amendments, etc.@@^^\n \n^^@@color(gray): Note 2: As discussed and agreed with DJAG/Ops on 3 May 06@@^^\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
The adoption of a File Naming Convention is one aspect covered in [[Local Implementation Plans]].\n\nWhen the new [[JAG IM Directives]] will come into effect, the following convention will be used to name electronic files, until such time has the [[CIMP]] has delivered the [[Document and Records Management System|DRMS]]:\n{{{\nyymmdd Title [Chapter and/or section info] [- {FR, ENG, BIL} (vX.Y) {FINAL, SIGNED, CURRENT, MODEL, DRAFT}] [_PB]\naammjj Titre [info de chapitre et/ou section] [- {FR, ANGL, BIL} (vX.Y) (FINAL, SIGNÉ, COURANT, MODELE, EBAUCHE)] [_PB]\n}}}\nWhere:\n[ ] indicates optional content\n{ } indicates that one value only may be chosen\n\nExamples:\n{{{\n060226 My Simple File\n060501 5RALC - 107.03 re Miller - FR (FINAL)\n060501 5RALC - 107.11 re Miller - FR (EBAUCHE)\n040215 DLaw T - OpLaw Manual - ENG (v2.3) (CURRENT)\n}}}\n\nUsing this naming convention will bring many benefits:\n* For the date prefix, use a logical date. For example, if your document is a meeting agenda, use as prefix the date of the meeting even if that date is in the future. Alternatively, you could use the document creation date: just ensure that you have a consistent practice. If you want to preserve a previous version, just copy the file and rename the copy with a new date and suffix info, as applicable. For example, the original file may contain the suffix "SIGNED" and you would rename the copy with today's date and the suffix "CURRENT", "DRAFT" or "MODEL", depending on your local practices. Versioning in Word is not to be used.\n* Using the date prefix consistently (as indicated) will result in your files being shown, by default, in chronological order. In addition, if you wanted to search for all files created in March 2004, just search for "0403*", etc.\n* //You do not have to use all ''suffix'' information suggested above//, but if you do, this naming convention will ensure that files are consistently named.\nPlease note that this file naming convention may change when the [[CIMP]] delivers the [[Document and Records Management|DRMS]] capability ([[RDIMS|http://www.rdims.gc.ca]]). \n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
The adoption of a File Usage Convention is one aspect covered in [[Local Implementation Plans]].\n\nWhen the new [[JAG IM Directives]] come into effect, the following convention will be relied upon when managing electronic files, until such time has the [[CIMP]] has delivered the [[Document and Records Management System|DRMS]]:\n* Identifying file versions, working copies, signed originals, models, etc. will be accomplished by adhering to a standard [[File Naming Convention]].\n* When file integrity is important - that is, that no unauthorized changes to the file should be possible - users should use the "Protect Document" feature of Microsoft Word. For example, right after the director has signed a document, the file content should be amended to include a "original signed" caveat above the signature block, the filename should be renamed with the date of signature as prefix and "SIGNED" as suffix (see [[File Naming Convention]] for details and examples). The file could then be copied with a new suffix ("MODEL" for example) and that new file left unprotected while the SIGNED file should be protected using the Microsoft Word "Protect Document" feature.\n* When restricting access to some files is important, a distinct cluster ("clusters" are explained in [[File Folder Convention]]) should be created and access to that cluster, or directory structure, will be restricted to authorized users.\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
[[Forums|http://en.wikipedia.org/wiki/Internet_forum]], also called bulletin boards or newsgroups, constitute an ideal space in which to hold virtual discussions. Forums are made of "posts" and posts are of two kinds: topics and replies. A popular package to host forums is [[phpBB|http://www.phpbb.com/]]. See examples of forums at [[Google Groups|http://groups.google.com/]] and [[Yahoo groups|http://groups.yahoo.com/]].\n\n[[Drupal|http://drupal.org]] incorporates a forums module. Couples with the Taxonomy module, all posts can be categorized for content management.
This is an example screenshot of ~GreatNews showing that many subsciptions to [[RSS]] feeds can be combined into one interface:\n\n[img[GreatNews screenshot|http://www.gov20.info/files/greatnews.JPG]]
@@color(gray):^^version [[4.4|060613 Rev 4.4]]^^@@\nWelcome to the future Legal Information Environment of the [[Office of the JAG]], delivered by the [[CIMP]].\n\n|>|>|!REMEMBER: //You can always come back to this page by clicking on "Home" at the top left of this page.//|\n|bgcolor(gray): @@color(white): ''What is this?''@@ |>|You are viewing a discussion paper outlining the future legal information environment of the [[Office of the Judge-Advocate General|Office of the JAG]]. Intrigued by its format? See [[About]]. Intrigued by its content? Read on!|\n|bgcolor(gray): @@color(white): ''Is this your first visit?''@@ |>|If this is your first visit and you think you need help navigating this document, please go to [[Read First]] - by clicking on [[Read First]]. When you click on expressions in bold, it will open up another section of text within this discussion paper.|\n|bgcolor(gray): @@color(white): ''Et la version française?''@@ |>|Veuillez consulter [[Pour les francophones]].|\n|bgcolor(gray): @@color(white): ''What is the big deal about the CIMP?!''@@ |>|You realize this by comparing the [[Before and After]] picture... Click on the latter link to learn more.|\n|bgcolor(gray): @@color(white): ''I'm in a hurry! Take me to what I need to read!''@@ |>|Well, that depends... What are your interests, level of knowledge, etc.? We have made an attempt to present you with a few choices below. The discussion paper main headings are listed in the top horizontal menu. Remember: you do not have to try to read everything in one sitting; the paper will be here tomorrow...|\n|bgcolor(gray): @@color(white): ''Ok - I like this and I think it is important; how can I be notified of changes to the discussion paper?''@@ |>|Via the JAG CIMP [[RSS|http://feeds.feedburner.com/jagcimp]] feed. If you do not know what RSS is, you can - if you are curious - visit our [[RSS]] section; or simply skip ahead and subscribe by email, which is next:|\n|~|>|Via [[email|http://www.feedblitz.com/f/?Sub=48386]] subscription. This link will take you to a subscription page asking your email. Please follow the instructions on that page and you will receive shortly thereafter an email from ~FEEDblitz to activate your email subscription.|\n|bgcolor(gray): @@color(white): ''I just subscribed. I want to see what were the changes in the latest revisions.''@@ |>|See [[Revisions]]. Open up (by clicking on them) each revision to find out what changed. The first six digits represent the date in the format yymmdd.|\n|bgcolor(gray): @@color(white): ''I'm a legal officer and...''@@ | //How will I work differently?// |See our [[User Scenarios|http://tinyurl.com/qdbph]]. The user scenarios are a great way into the world of [[CIMP]]! The names of our characters may sound strangely familiar to you if you work in the Office of the JAG: this is entirely coincidental... ~LCol Tokes should not be confused for Maj Stokes, for example!|\n|~| //Will CIMP help with training delivery (to legal officers and the Canadian Forces?)// |See [[DLaw/T Requirements|http://tinyurl.com/hhrhe]]. You will find at the latter link a selection of articles from this paper outlining how the CIMP will tackle [[DLaw T Requirements]]. Do not forget to read the associated [[DLaw T Scenario]]!|\n|~| //How CIMP will give me access to Material of precedential value?// |See [[Material of precedential value]]. This is where I would expect most legal officers to go, if you are anxiously awaiting a more supportive electronic information environment!|\n|~| //I heard about implementation plans for regional offices and directorates. What are they?// |[[Local Implementation Plans]] will be explained at the [[RVG Retreat - June 06]]. They are an essential ingredient of the [[Business Transformation]] to be completed in 2006. They cover topics such as [[File Naming Convention]], [[File Folder Convention]], the adoption of a [[JAG Master File Plan]], etc.|\n|bgcolor(gray): @@color(white): ''I work in the Office of the JAG and...''@@ | //There is a Retreat in June 2006?// |See the [[Requirements Validation Group Retreat (June 2006)|RVG Retreat - June 06]].|\n|~| //Will CIMP help with Email Overload?// |See [[Email Overload]] and [[ManageInfoEfficiently]].|\n|~| //I hear that CIMP will replace over 50 file plans..?// |See the proposed [[JAG Master File Plan]].|\n|~| //Will CIMP truly make the Office of the JAG a modern law firm?// |The CIMP will deploy five IT capabilities: [[Protected B Networks|PB Network]], [[Classified Network]], [[Document and Records Management |DRMS]], [[Practice and Case Management|PCMS]] and a [[Portal]]. Several [[Web 2.0]] technologies will be introduced with the Portal.|\n|~| //How can I get started using Web 2.0 stuff?// |The best way to learn wikis, blogs, subscibing to feeds and using newsreaders, etc., has been summarized in [[Starting With Web 2.0|http://imbok.blogspot.com/2006/06/starting-with-web-20_22.html]] for your convenience.|\n|bgcolor(gray): @@color(white): ''I am just interested in knowing...''@@ | //What is this Web 2.0 stuff - does it matter?// |On Web 2.0, see [[JAG CIMP and Web 2.0 stuff|http://tinyurl.com/mbg65]]. Web 2.0 is an umbrella term that encompasses new ways to experience the web. Concepts such as "the web as a platform" and "the read and writable web" are often associated with Web 2.0.|\n|~| //How can you be sure you have taken everything into account?// |Easy: by following a [[Standardized Information Management Framework|SIMF]] taught at the [[Canada School of the Public Service|CSPS]] in course [[I310]], we have developed the [[JAG Information Architecture|JIA]]. It may sound as a lot of mumbo jumbo, but it really is simple. We have figured out [[what needs to be strainghtened out|Architecture Components]], then [[what to take into account|Architecture Inputs]], then [[how to issue direction and support|JAG IM Directives]], the whole of it superimposed by [[Vision & Principles]]. Want to know more? Get in touch with [[Maj Patrick Cormier]].|\n|~| //How will you make this happen?!// |With dollars and sweat. Ok, seriously - see the [[way ahead|http://tinyurl.com/jw2ep]].|\n|bgcolor(gray): @@color(white): ''Hey! I have this great idea! (or comment, suggestion, question, etc.)''@@ |>|Great! Please share it with us in [[Feedback]].|\n\n\n
/***\nTo use, add {{{[[HorizontalMainMenuStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also HorizontalMainMenu and PageTemplate.\n***/\n/*{{{*/\n\n#topMenu br {display:none; }\n#topMenu { background: #39a; }\n#topMenu { padding:2px; }\n#topMenu .button, #topMenu .tiddlyLink {\n margin-left:0.5em; margin-right:0.5em;\n padding-left:3px; padding-right:3px;\n color:white; font-size:115%;\n}\n#topMenu .button:hover, #topMenu .tiddlyLink:hover { background:#178;}\n\n#displayArea { margin: 1em 15.7em 0em 1em; } /* so we use the freed up space */\n\n/* just in case want some QuickOpenTags in your topMenu */\n#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }\n#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }\n#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }\n\n\n/*}}}*/
Course [[I310|http://www.myschool-monecole.gc.ca/corporate/list_e.asp?value=all&lang=E&loid=486]], taught at the [[Canada School of the Public Service|http://www.myschool-monecole.gc.ca/main_e.html]], targets the following participants:\n<<<\nThis course targets IM Leaders, Managers and Directors or any public servant entrusted with the responsibility to (a) develop value propositions related to IM/IT investments, or (b) transform their business and information environments to deliver integrated information management.\n<<<\nIn this course, developed by [[Patrick Cormier|Maj Patrick Cormier]], participants are taught how and when to develop Standardized Information Management Frameworks ([[SIMF]]'s).\n
The JAG Information Architecture ([[JIA]]), which is the total deliverable of the [[CIMP]], has [[nine components|Architecture Components]]. One of them is Information Technology (IT).\n\nThe JIA to be delivered by the [[CIMP]] will include five [[essential|Assumptions]] IT platforms: \n* [[Protected B Network|PB Network]]s (using the DWAN and a thin client architecture)\n* [[Classified Network]] (using Titan)\n* [[Document and Records Management|DRMS]] (using [[RDIMS|http://www.rdims.gc.ca]])\n* [[Practice and Case Management|PCMS]] (using a Commercial and Off the Shelf solution)\n* [[Portal]] (using [[Drupal]])\nThe exploitation of these platforms is necessarily linked with the correct planning and implementation of the eight [[other architectural components|Architecture Components]].\n
The IT Shared Services Organization (IT SSO) is a new [[PW&GSC]] entity that will increasingly offer shared services to all federal Departments and Agencies.
This tiddler demonstrates the use of the non-interactive mode of ImportTiddlersPlugin. The following macro is executed each time this tiddler is rendered and automatically imports all new/changed tiddlers from the indicated URL:\n\n{{{<<importTiddlers updates http://www.TiddlyTools.com/example.html ask>>}}}\n<<importTiddlers updates http://www.TiddlyTools.com/example.html ask>>\n
<<importTiddlers inline>>
/***\n''Import Tiddlers Plugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#ImportTiddlersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. It can also be very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\n!!!!!Inline interface (live)\n<<<\n<<importTiddlers inline>>\n<<<\n!!!!!Macro Syntax\n<<<\n{{{<<importTiddlers>>}}}\ncreates "import tiddlers" link. click to show/hide import control panel\n\n{{{<<importTiddlers inline>>}}}\ncreates import control panel directly in tiddler content\n\n{{{<<importTiddlers filter source quiet ask>>}}}\nnon-interactive 'automatic' import.\n''filter'' determines which tiddlers will be automatically selected for importing. Use one of the following keywords:\n>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler\n>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)\n>''"tiddler:~TiddlerName"'' retrieves only the specific tiddler named in the parameter.\n>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.\n''source'' is the location of the imported document. It can be either a local document or an URL:\n>filename is any local path/file, in whatever format your system requires\n>URL is any remote web location that starts with "http://" or "https://"\n''"quiet"'' (optional)\n>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.\n''"ask"'' (optional)\n>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.\n\n''Special tag values: importReplace and importPublic''\n\nBy adding these special tags to an existing tiddler, you can precisely control whether or not to allow updates to that tiddler as well as decide which tiddlers in your document can be automatically imported by others.\n*''For maximum safety, the default action is to prevent existing tiddlers from being unintentionally overwritten by incoming tiddlers.'' To allow an existing tiddler to be overwritten by an imported tiddler, you must tag the existing tiddler with ''<<tag importReplace>>''\n*''For maximum privacy, the default action for //outgoing// tiddlers is to NOT automatically share your tiddlers with others.'' To allow a tiddler in your document to be shared via auto-import actions by others, you must tag it with ''<<tag importPublic>>''\n//Note: these tags are only applied when using the auto-import processing. When using the interactive control panel, all tiddlers in the imported document are available in the listbox, regardless of their tag values.//\n<<<\n!!!!!Interactive Usage\n<<<\nWhen used interactively, a control panel is displayed consisting of an "import source document" filename input (text field plus a ''[Browse...]'' button), a listbox of available tiddlers, a "differences only" checkbox, an "add tags" input field and four push buttons: ''[open]'', ''[select all]'', ''[import]'' and ''[close]''.\n\nPress ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//\n\nSelect one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.\n\n''select: all, new, changes, or differences''\n\nYou can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:\n>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document\n>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)\n\n''Import Tagging:''\n\nTiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.\n\n''Skip, Rename, Merge, or Replace:''\n\nWhen importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.\n\nTo bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.\n\n//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//\n\n''Import Report History''\n\nWhen tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.\n\nWhen the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.\n\nIf a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.\n\nNote: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.\n\n<<<\n!!!!!Installation\n<<<\ncopy/paste the following tiddlers into your document:\n''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < ImportTiddlers > >" macro^^\n\n''Quick Installation Tip #1:''\nIf you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.\n<<<\n!!!!!Revision History\n<<<\n''2006.02.21 [2.8.0]''\nadded support for "tiddler:TiddlerName" filtering parameter in auto-import processing\n''2006.02.21 [2.7.1]''\nClean up layout problems with IE. (Use tables for alignment instead of SPANs styled with float:left and float:right)\n''2006.02.21 [2.7.0]''\nAdded "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel. Default file control is replaced with URL text input field when "web server" is selected. Default remote document URL is defined in SiteURL tiddler. Also, added option for prepending SiteProxy URL as prefix to remote URL to mask cross-domain document access (requires compatible server-side script)\n''2006.02.17 [2.6.0]''\nRemoved "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.\n''2006.02.16 [2.5.4]''\nadded checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.\n''2006.02.14 [2.5.3]''\nFF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()\n''2006.02.10 [2.5.2]''\ncorrected unintended global variable in importReport().\n''2006.02.05 [2.5.1]''\nmoved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2006.01.18 [2.5.0]''\nadded checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.\n''2006.01.15 [2.4.1]''\nadded "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic\n''2006.01.15 [2.4.0]''\nAdded support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.\n''2006.01.15 [2.3.2]''\nAdded "ask" parameter to confirm each tiddler before importing (for use with auto-importing)\n''2006.01.15 [2.3.1]''\nStrip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the "Found 0 tiddlers" problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.\n''2006.01.12 [2.3.0]''\nReorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.\n''2006.01.11 [2.2.0]''\nAdded "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck\n''2006.01.09 [2.1.1]''\nWhen a URL is typed in, and then the "open" button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the "open" button in the control panel.\n''2006.01.08 [2.1.0]''\nIMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.\n''2006.01.06 [2.0.2]''\nWhen refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.\n''2006.01.04 [2.0.1]''\nWhen "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.\n''2005.12.27 [2.0.0]''\nUpdate for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n''2005.12.22 [1.3.1]''\ntweak formatting in importReport() and add 'discard report' link to output\n''2005.12.03 [1.3.0]''\nDynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)\n''2005.11.29 [1.2.1]''\nfixed formatting of 'detail info' in importReport()\n''2005.11.11 [1.2.0]''\nadded 'inline' param to embed controls in a tiddler\n''2005.11.09 [1.1.0]''\nonly load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.\n''2005.10.25 [1.0.5]''\nfixed typo in importReport() that prevented reports from being generated\n''2005.10.09 [1.0.4]''\ncombined documentation with plugin code instead of using separate tiddlers\n''2005.08.05 [1.0.3]''\nmoved CSS and HTML definitions into plugin code instead of using separate tiddlers\n''2005.07.27 [1.0.2]''\ncore update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]''\nadded parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n\n// // Version\n//{{{\nversion.extensions.importTiddlers = {major: 2, minor: 8, revision: 0, date: new Date(2006,3,12)};\n//}}}\n\n// // 1.2.x compatibility\n//{{{\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n// // IE needs explicit global scoping for functions/vars called from browser events\n//{{{\nwindow.onClickImportButton=onClickImportButton;\nwindow.loadImportFile=loadImportFile;\nwindow.refreshImportList=refreshImportList;\n//}}}\n\n// // default cookie/option values\n//{{{\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n//}}}\n\n\n// // ''MACRO DEFINITION''\n\n//{{{\nconfig.macros.importTiddlers = { };\nconfig.macros.importTiddlers = {\n label: "import tiddlers",\n prompt: "Copy tiddlers from another document",\n countMsg: "%0 tiddlers selected for import",\n src: "", // path/filename or URL of document to import (retrieved from SiteUrl tiddler)\n proxy: "", // URL for remote proxy script (retrieved from SiteProxy tiddler)\n useProxy: false, // use specific proxy script in front of remote URL\n inbound: null, // hash-indexed array of tiddlers from other document\n newTags: "", // text of tags added to imported tiddlers\n addTags: true, // add new tags to imported tiddlers\n listsize: 8, // # of lines to show in imported tiddler list\n importTags: true, // include tags from remote source document when importing a tiddler\n keepTags: true, // retain existing tags when replacing a tiddler\n index: 0, // current processing index in import list\n sort: "" // sort order for imported tiddler listbox\n};\n\nconfig.macros.importTiddlers.handler = function(place,macroName,params) {\n // LINK WITH FLOATING PANEL\n if (!params[0]) {\n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n return;\n }\n // INLINE TIDDLER CONTENT\n if (params[0]=="inline") {\n createImportPanel(place);\n document.getElementById("importPanel").style.position="static";\n document.getElementById("importPanel").style.display="block";\n return;\n }\n // NON-INTERACTIVE BATCH MODE\n switch (params[0].substr(0,7)) {\n case 'all':\n case 'new':\n case 'changes':\n case 'updates':\n case 'tiddler':\n var filter=params.shift();\n break;\n default:\n var filter="updates";\n break;\n } \n if (!params[0]||!params[0].length) return; // filename is required\n config.macros.importTiddlers.src=params.shift();\n var quiet=(params[0]=="quiet"); if (quiet) params.shift();\n var ask=(params[0]=="ask"); if (ask) params.shift();\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n // load storeArea from a hidden IFRAME, then apply import rules and add/replace tiddlers\n loadImportFile(config.macros.importTiddlers.src,filter,quiet,ask,autoImportTiddlers);\n}\n//}}}\n\n// // ''READ TIDDLERS FROM ANOTHER DOCUMENT''\n\n//{{{\nfunction loadImportFile(src,filter,quiet,ask,callback) {\n if (!quiet) clearMessage();\n // LOCAL FILE\n if ((src.substr(0,7)!="http://")&&(src.substr(0,8)!="https://")) {\n if (!quiet) displayMessage("Opening local document: "+ src);\n var txt=loadFile(src);\n if(!txt) { if (!quiet) displayMessage("Could not open local document: "+src); }\n else {\n var s="<html><body>"+txt.substr(txt.indexOf('<div id="storeArea">'));\n if (!quiet) displayMessage(txt.length+" bytes in document. ("+s.length+" bytes used for tiddler storage)");\n config.macros.importTiddlers.inbound = readImportedTiddlers(convertUTF8ToUnicode(s));\n var count=config.macros.importTiddlers.inbound?config.macros.importTiddlers.inbound.length:0;\n if (!quiet) displayMessage("Found "+count+" tiddlers in "+src);\n if (callback) callback(src,filter,quiet,ask);\n }\n return;\n }\n // REMOTE FILE\n var x; // XML object\n try {x = new XMLHttpRequest()}\n catch(e) {\n try {x = new ActiveXObject("Msxml2.XMLHTTP")}\n catch (e) {\n try {x = new ActiveXObject("Microsoft.XMLHTTP")}\n catch (e) { return }\n }\n }\n x.onreadystatechange = function() {\n if (x.readyState == 4) {\n if (x.status == 200) {\n var sa="<html><body>"+x.responseText.substr(x.responseText.indexOf('<div id="storeArea">'));\n if (!quiet) displayMessage(x.responseText.length+" bytes in document. ("+sa.length+" bytes used for tiddler storage)");\n config.macros.importTiddlers.inbound = readImportedTiddlers(sa);\n var count=config.macros.importTiddlers.inbound?config.macros.importTiddlers.inbound.length:0;\n if (!quiet) displayMessage("Found "+count+" tiddlers in "+src);\n if (callback) callback(src,filter,quiet,ask);\n }\n else\n if (!quiet) displayMessage("Could not open remote document:"+ src+" (error="+x.status+")");\n }\n }\n if (document.location.protocol=="file:") { // UniversalBrowserRead only works from a local file context\n try {netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')}\n catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }\n }\n if (config.macros.importTiddlers.useProxy) src=config.macros.importTiddlers.proxy+src;\n if (!quiet) displayMessage("Opening remote document: "+ src);\n try {\n var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();\n x.open("GET",url,true);\n x.overrideMimeType('text/html');\n x.send(null);\n }\n catch (e) {\n if (!quiet) {\n displayMessage("Could not open remote document: "+src);\n displayMessage(e.description?e.description:e.toString());\n }\n }\n}\n\nfunction readImportedTiddlers(txt)\n{\n var importedTiddlers = [];\n // create frame\n var f=document.getElementById("importFrame");\n if (f) document.body.removeChild(f);\n f=document.createElement("iframe");\n f.id="importFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n // get document\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n // load source into document\n d.open(); d.writeln(txt); d.close();\n // read tiddler DIVs from storeArea DOM element \n var importStore = [];\n var importStoreArea = d.getElementById("storeArea");\n if (!importStoreArea || !(importStore=importStoreArea.childNodes) || (importStore.length==0)) { return null; }\n importStoreArea.normalize();\n for(var t = 0; t < importStore.length; t++) {\n var e = importStore[t];\n var title = null;\n if(e.getAttribute)\n title = e.getAttribute("tiddler");\n if(!title && e.id && (e.id.substr(0,5) == "store"))\n title = e.id.substr(5);\n if(title && title != "") {\n var theImported = new Tiddler();\n theImported.loadFromDiv(e,title);\n importedTiddlers.push(theImported);\n }\n }\n return importedTiddlers;\n}\n//}}}\n\n// // ''NON-INTERACTIVE IMPORT''\n\n// // import all/new/changed tiddlers into store, replacing or adding tiddlers as needed\n//{{{\nfunction autoImportTiddlers(src,filter,quiet,ask)\n{\n var count=0;\n if (config.macros.importTiddlers.inbound) for (var t=0;t<config.macros.importTiddlers.inbound.length;t++) {\n var theImported = config.macros.importTiddlers.inbound[t];\n var theExisting = store.getTiddler(theImported.title);\n\n // only import tiddlers if tagged with "importPublic"\n if (theImported.tags && theImported.tags.find("importPublic")==null)\n { config.macros.importTiddlers.inbound[t].status=""; continue; } // status=="" means don't show in report\n\n // never import the "ImportedTiddlers" history from the other document...\n if (theImported.title=='ImportedTiddlers')\n { config.macros.importTiddlers.inbound[t].status=""; continue; } // status=="" means don't show in report\n\n // check existing tiddler for importReplace, or systemConfig tags\n config.macros.importTiddlers.inbound[t].status="added"; // default - add any tiddlers not filtered out\n if (store.tiddlerExists(theImported.title)) {\n config.macros.importTiddlers.inbound[t].status="replaced";\n if (!theExisting.tags||(theExisting.tags.find("importReplace")==null))\n { config.macros.importTiddlers.inbound[t].status="not imported - tiddler already exists (use importReplace to allow changes)"; continue; }\n if ((theExisting.tags.find("systemConfig")!=null)||(theImported.tags.find("systemConfig")!=null))\n config.macros.importTiddlers.inbound[t].status+=" - WARNING: an active systemConfig plugin has been added or updated";\n }\n\n // apply the all/new/changes/updates filter \n if (filter!="all") {\n if ((filter=="new") && store.tiddlerExists(theImported.title))\n { config.macros.importTiddlers.inbound[t].status="not imported - tiddler already exists"; continue; }\n if ((filter=="changes") && !store.tiddlerExists(theImported.title))\n { config.macros.importTiddlers.inbound[t].status="not imported - new tiddler"; continue; }\n if ((filter.substr(0,8)=="tiddler:") && theImported.title!=filter.substr(8))\n { config.macros.importTiddlers.inbound[t].status=""; continue; }\n if (store.tiddlerExists(theImported.title) && ((theExisting.modified.getTime()-theImported.modified.getTime())>=0))\n { config.macros.importTiddlers.inbound[t].status="not imported - tiddler is unchanged"; continue; }\n }\n\n // get confirmation if required\n if (ask && !confirm("Import "+(theExisting?"updated":"new")+" tiddler '"+theImported.title+"'\snfrom "+src))\n { config.macros.importTiddlers.inbound[t].status="skipped - cancelled by user"; continue; }\n\n // DO THE IMPORT!!\n store.addTiddler(theImported); count++;\n }\n importReport(quiet); // generate a report (as needed) and display it if not 'quiet'\n if (count) store.setDirty(true); \n // always show final message when tiddlers were actually imported\n if (!quiet||count) displayMessage("Imported "+count+" tiddler"+(count!=1?"s":"")+" from "+src);\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n\n//{{{\nfunction importReport(quiet)\n{\n if (!config.macros.importTiddlers.inbound) return;\n // DEBUG alert('importReport: start');\n\n // if import was not completed, the Ask panel will still be open... close it now.\n var askpanel=document.getElementById('importAskPanel'); if (askpanel) askpanel.style.display='none'; \n // get the alphasorted list of tiddlers\n var tiddlers = config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // gather the statistics\n var count=tiddlers.length;\n var added=0; var replaced=0; var renamed=0; var skipped=0; var merged=0;\n for (var t=0; t<count; t++)\n if (tiddlers[t].status)\n {\n if (tiddlers[t].status=='added') added++;\n if (tiddlers[t].status.substr(0,7)=='skipped') skipped++;\n if (tiddlers[t].status.substr(0,6)=='rename') renamed++;\n if (tiddlers[t].status.substr(0,7)=='replace') replaced++;\n if (tiddlers[t].status.substr(0,6)=='merged') merged++;\n }\n var omitted=count-(added+replaced+renamed+skipped+merged);\n // DEBUG alert('stats done: '+count+' total, '+added+' added, '+skipped+' skipped, '+renamed+' renamed, '+replaced+' replaced, '+merged+' merged');\n // skip the report if nothing was imported\n if (added+replaced+renamed+merged==0) return;\n // skip the report if not desired by user\n if (!config.options.chkImportReport) {\n // reset status flags\n for (var t=0; t<count; t++) config.macros.importTiddlers.inbound[t].status="";\n // refresh display since tiddlers have been imported\n store.notifyAll();\n // quick message area summary report\n var msg=(added+replaced+renamed+merged)+' of '+count+' tiddler'+((count!=1)?'s':"");\n msg+=' imported from '+config.macros.importTiddlers.src.replace(/\s\s/g,'/')\n displayMessage(msg);\n return;\n }\n // create the report tiddler (if not already present)\n var tiddler = store.getTiddler('ImportedTiddlers');\n if (!tiddler) // create new report tiddler if it doesn't exist\n {\n tiddler = new Tiddler();\n tiddler.title = 'ImportedTiddlers';\n tiddler.text = "";\n }\n // format the report header\n var now = new Date();\n var newText = "";\n newText += "On "+now.toLocaleString()+", "+config.options.txtUserName+" imported tiddlers from\sn";\n newText += "[["+config.macros.importTiddlers.src+"|"+config.macros.importTiddlers.src+"]]:\sn";\n newText += "<"+"<"+"<\sn";\n newText += "Out of "+count+" tiddler"+((count!=1)?"s ":" ")+" in {{{"+config.macros.importTiddlers.src.replace(/\s\s/g,'/')+"}}}:\sn";\n if (added+renamed>0)\n newText += (added+renamed)+" new tiddler"+(((added+renamed)!=1)?"s were":" was")+" added to your document.\sn";\n if (merged>0)\n newText += merged+" tiddler"+((merged!=1)?"s were":" was")+" merged with "+((merged!=1)?"":"an ")+"existing tiddler"+((merged!=1)?"s":"")+".\sn"; \n if (replaced>0)\n newText += replaced+" existing tiddler"+((replaced!=1)?"s were":" was")+" replaced.\sn"; \n if (skipped>0)\n newText += skipped+" tiddler"+((skipped!=1)?"s were":" was")+" skipped after asking.\sn"; \n if (omitted>0)\n newText += omitted+" tiddler"+((omitted!=1)?"s":"")+((omitted!=1)?" were":" was")+" not imported.\sn";\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newText += "imported tiddlers were tagged with: \s""+config.macros.importTiddlers.newTags+"\s"\sn";\n // output the tiddler detail and reset status flags\n for (var t=0; t<count; t++)\n if (tiddlers[t].status!="")\n {\n newText += "#["+"["+tiddlers[t].title+"]"+"]";\n newText += ((tiddlers[t].status!="added")?("^^\sn"+tiddlers[t].status+"^^"):"")+"\sn";\n config.macros.importTiddlers.inbound[t].status="";\n }\n newText += "<"+"<"+"<\sn";\n // output 'discard report' link\n newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n newText += "onclick=\s"story.closeTiddler('"+tiddler.title+"'); store.deleteTiddler('"+tiddler.title+"');\s" ";\n newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n tiddler.text = newText+((tiddler.text!="")?'\sn----\sn':"")+tiddler.text;\n tiddler.modifier = config.options.txtUserName;\n tiddler.modified = new Date();\n store.addTiddler(tiddler);\n if (!quiet) story.displayTiddler(null,"ImportedTiddlers",1,null,null,false);\n story.refreshTiddler("ImportedTiddlers",1,true);\n // refresh the display\n store.notifyAll();\n}\n//}}}\n\n// // ''INTERFACE DEFINITION''\n\n// // Handle link click to create/show/hide control panel\n//{{{\nfunction onClickImportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("importPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createImportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n// // Create control panel: HTML, CSS, register for notification\n//{{{\nfunction createImportPanel(place) {\n var panel=document.getElementById("importPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.importTiddlers.css,"importTiddlers");\n panel=createTiddlyElement(place,"span","importPanel",null,null)\n panel.innerHTML=config.macros.importTiddlers.html;\n store.addNotification(null,refreshImportList); // refresh listbox after every tiddler change\n refreshImportList();\n var siteURL=store.getTiddlerText("SiteUrl"); if (!siteURL) siteURL="";\n document.getElementById("importSourceURL").value=siteURL;\n config.macros.importTiddlers.src=siteURL;\n var siteProxy=store.getTiddlerText("SiteProxy"); if (!siteProxy) siteProxy="SiteProxy";\n document.getElementById("importSiteProxy").value=siteProxy;\n config.macros.importTiddlers.proxy=siteProxy;\n return panel;\n}\n//}}}\n\n// // CSS\n//{{{\nconfig.macros.importTiddlers.css = '\s\n#importPanel {\s\n display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#importPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#importPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#importPanel .rad { width:auto; }\s\n#importPanel .chk { width:auto; margin:1px; }\s\n#importPanel .btn { width:auto; }\s\n#importPanel .btn1 { width:98%; }\s\n#importPanel .btn2 { width:48%; }\s\n#importPanel .btn3 { width:32%; }\s\n#importPanel .btn4 { width:24%; }\s\n#importPanel .btn5 { width:19%; }\s\n#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\s\n#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\s\n#importAskPanel { display:none; margin:0.5em 0em 0em 0em; }\s\n';\n//}}}\n\n// // HTML \n//{{{\nconfig.macros.importTiddlers.html = '\s\n<!-- source and report -->\s\n<table><tr><td align=left>\s\n import from\s\n <input type="radio" class="rad" name="importFrom" value="file" CHECKED\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=!this.checked?\s'block\s':\s'none\s'"> local file\s\n <input type="radio" class="rad" name="importFrom" value="http"\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=!this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=this.checked?\s'block\s':\s'none\s'"> web server\s\n</td><td align=right>\s\n <input type=checkbox class="chk" id="chkImportReport" checked\s\n onClick="config.options[\s'chkImportReport\s']=this.checked;"> create a report\s\n</td></tr></table>\s\n<!-- import from local file -->\s\n<div id="importLocalPanel" style="display:block;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\nlocal document path/filename:<br>\s\n<input type="file" id="fileImportSource" size=57 style="width:100%"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<!-- import from http server -->\s\n<div id="importHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\n<table><tr><td align=left>\s\n remote document URL:<br>\s\n</td><td align=right>\s\n <input type="checkbox" class="chk" id="importUseProxy"\s\n onClick="config.macros.importTiddlers.useProxy=this.checked;\s\n document.getElementById(\s'importSiteProxy\s').style.display=this.checked?\s'block\s':\s'none\s'"> use a proxy script\s\n</td></tr></table>\s\n<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\s\n onKeyUp="config.macros.importTiddlers.proxy=this.value"\s\n onChange="config.macros.importTiddlers.proxy=this.value;">\s\n<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<table><tr><td align=left>\s\n select:\s\n <a href="JavaScript:;" id="importSelectAll"\s\n onclick="onClickImportButton(this)" title="select all tiddlers">\s\n all </a>\s\n <a href="JavaScript:;" id="importSelectNew"\s\n onclick="onClickImportButton(this)" title="select tiddlers not already in destination document">\s\n added </a> \s\n <a href="JavaScript:;" id="importSelectChanges"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been updated in source document">\s\n changes </a> \s\n <a href="JavaScript:;" id="importSelectDifferences"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been added or are different from existing tiddlers">\s\n differences </a> \s\n <a href="JavaScript:;" id="importToggleFilter"\s\n onclick="onClickImportButton(this)" title="show/hide selection filter">\s\n filter </a> \s\n</td><td align=right>\s\n <a href="JavaScript:;" id="importListSmaller"\s\n onclick="onClickImportButton(this)" title="reduce list size">\s\n – </a>\s\n <a href="JavaScript:;" id="importListLarger"\s\n onclick="onClickImportButton(this)" title="increase list size">\s\n + </a>\s\n <a href="JavaScript:;" id="importListMaximize"\s\n onclick="onClickImportButton(this)" title="maximize/restore list size">\s\n = </a>\s\n</td></tr></table>\s\n<select id="importList" size=8 multiple\s\n onchange="setTimeout(\s'refreshImportList(\s'+this.selectedIndex+\s')\s',1)">\s\n <!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\s\n</select>\s\n<input type=checkbox class="chk" id="chkAddTags" checked\s\n onClick="config.macros.importTiddlers.addTags=this.checked;">add new tags \s\n<input type=checkbox class="chk" id="chkImportTags" checked\s\n onClick="config.macros.importTiddlers.importTags=this.checked;">import source tags \s\n<input type=checkbox class="chk" id="chkKeepTags" checked\s\n onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing tags<br>\s\n<input type=text id="txtNewTags" size=15 onKeyUp="config.macros.importTiddlers.newTags=this.value" autocomplete=off>\s\n<div align=center>\s\n <input type=button id="importOpen" class="importButton" style="width:32%" value="open"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importStart" class="importButton" style="width:32%" value="import"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importClose" class="importButton" style="width:32%" value="close"\s\n onclick="onClickImportButton(this)">\s\n</div>\s\n<div id="importAskPanel">\s\n tiddler already exists:\s\n <input type=text id="importNewTitle" size=15 autocomplete=off">\s\n <div align=center>\s\n <input type=button id="importSkip" class="importButton" style="width:23%" value="skip"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importRename" class="importButton" style="width:23%" value="rename"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importMerge" class="importButton" style="width:23%" value="merge"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\s\n onclick="onClickImportButton(this)">\s\n </div>\s\n</div>\s\n';\n//}}}\n\n// // refresh listbox\n//{{{\nfunction refreshImportList(selectedIndex)\n{\n var theList = document.getElementById("importList");\n if (!theList) return;\n // if nothing to show, reset list content and size\n if (!config.macros.importTiddlers.inbound) \n {\n while (theList.length > 0) { theList.options[0] = null; }\n theList.options[0]=new Option('please open a document...',"",false,false);\n theList.size=config.macros.importTiddlers.listsize;\n return;\n }\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) config.macros.importTiddlers.sort='title'; // heading\n if (selectedIndex==1) config.macros.importTiddlers.sort='title';\n if (selectedIndex==2) config.macros.importTiddlers.sort='modified';\n if (selectedIndex==3) config.macros.importTiddlers.sort='tags';\n if (selectedIndex>3) {\n // display selected tiddler count\n for (var t=0,count=0; t < theList.options.length; t++) count+=(theList.options[t].selected&&theList.options[t].value!="")?1:0;\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n return; // no refresh needed\n }\n\n // get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)\n var tiddlers=config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=new Option(tiddlers.length+' tiddler'+((tiddlers.length!=1)?'s are':' is')+' in the document',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="title" )?">":indent)+' [by title]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="modified")?">":indent)+' [by date]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="tags")?">":indent)+' [by tags]',"",false,false);\n // output the tiddler list\n switch(config.macros.importTiddlers.sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++) {\n var tiddler = tiddlers[t];\n var theSection = tiddler.modified.toLocaleDateString();\n if (theSection != lastSection) {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n case "tags":\n var theTitles = {}; // all tiddler titles, hash indexed by tag value\n var theTags = new Array();\n for(var t=0; t<tiddlers.length; t++) {\n var title=tiddlers[t].title;\n var tags=tiddlers[t].tags;\n for(var s=0; s<tags.length; s++) {\n if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }\n theTitles[tags[s]].push(title);\n }\n }\n theTags.sort();\n for(var tagindex=0; tagindex<theTags.length; tagindex++) {\n var theTag=theTags[tagindex];\n theList.options[i++]=new Option(theTag,"",false,false);\n for(var t=0; t<theTitles[theTag].length; t++)\n theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n if (theList.size<config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;\n if (theList.size>theList.options.length) theList.size=theList.options.length;\n}\n//}}}\n\n// // Control interactions\n//{{{\nfunction onClickImportButton(which)\n{\n // DEBUG alert(which.id);\n var theList = document.getElementById('importList');\n if (!theList) return;\n var thePanel = document.getElementById('importPanel');\n var theAskPanel = document.getElementById('importAskPanel');\n var theNewTitle = document.getElementById('importNewTitle');\n var count=0;\n switch (which.id)\n {\n case 'fileImportSource':\n case 'importOpen': // load import source into hidden frame\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n if (config.macros.importTiddlers.src=="") break;\n // Load document into hidden iframe so we can read it's DOM and fill the list\n loadImportFile(config.macros.importTiddlers.src,"all",null,null,function(src,filter,quiet,ask){window.refreshImportList(0);});\n break;\n case 'importSelectAll': // select all tiddler list items (i.e., not headings)\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count++;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectNew': // select tiddlers not in current document\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=!store.tiddlerExists(theList.options[t].value);\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value==""||!store.tiddlerExists(theList.options[t].value)) continue;\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified>0); // updated tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count++; continue; }\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified!=0); // changed tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importToggleFilter': // show/hide filter\n case 'importFilter': // apply filter\n alert("coming soon!");\n break;\n case 'importStart': // initiate the import processing\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.index=0;\n config.macros.importTiddlers.index=importTiddlers(0);\n importStopped();\n break;\n case 'importClose': // unload imported tiddlers or hide the import control panel\n // if imported tiddlers not loaded, close the import control panel\n if (!config.macros.importTiddlers.inbound) { thePanel.style.display='none'; break; }\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n break;\n case 'importSkip': // don't import the tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status='skipped after asking'; // mark item as skipped\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index+1); // resume with NEXT item\n importStopped();\n break;\n case 'importRename': // change name of imported tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status = 'renamed from '+theImported.title; // mark item as renamed\n theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title\n theItem.value = theNewTitle.value; // change the listbox item text\n theItem.text = theNewTitle.value; // change the listbox item text\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importMerge': // join existing and imported tiddler content\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n var theText = theExisting.text+'\sn----\sn^^merged from: [['+config.macros.importTiddlers.src+'#'+theItem.value+'|'+config.macros.importTiddlers.src+'#'+theItem.value+']]^^\sn^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\sn'+theImported.text;\n var theDate = new Date();\n var theTags = theExisting.getTags()+' '+theImported.getTags();\n theImported.set(null,theText,null,theDate,theTags);\n theImported.status = 'merged with '+theExisting.title; // mark item as merged\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY hh:mm:ss");\n theImported.status += ' by '+theExisting.modifier;\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with this item\n importStopped();\n break;\n case 'importReplace': // substitute imported tiddler for existing tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n theImported.status = 'replaces '+theExisting.title; // mark item for replace\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY hh:mm:ss");\n theImported.status += ' by '+theExisting.modifier;\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importListSmaller': // decrease current listbox size, minimum=5\n if (theList.options.length==1) break;\n theList.size-=(theList.size>5)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListLarger': // increase current listbox size, maximum=number of items in list\n if (theList.options.length==1) break;\n theList.size+=(theList.size<theList.options.length)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListMaximize': // toggle listbox size between current and maximum\n if (theList.options.length==1) break;\n theList.size=(theList.size==theList.options.length)?config.macros.importTiddlers.listsize:theList.options.length;\n break;\n }\n}\n//}}}\n\n// // re-entrant processing for handling import with interactive collision prompting\n//{{{\nfunction importTiddlers(startIndex)\n{\n if (!config.macros.importTiddlers.inbound) return -1;\n\n var theList = document.getElementById('importList');\n if (!theList) return;\n var t;\n // if starting new import, reset import status flags\n if (startIndex==0)\n for (var t=0;t<config.macros.importTiddlers.inbound.length;t++)\n config.macros.importTiddlers.inbound[t].status="";\n for (var i=startIndex; i<theList.options.length; i++)\n {\n // if list item is not selected or is a heading (i.e., has no value), skip it\n if ((!theList.options[i].selected) || ((t=theList.options[i].value)==""))\n continue;\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==t) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theImported.title);\n // avoid redundant import for tiddlers that are listed multiple times (when 'by tags')\n if (theImported.status=="added")\n continue;\n // don't import the "ImportedTiddlers" history from the other document...\n if (theImported.title=='ImportedTiddlers')\n continue;\n // if tiddler exists and import not marked for replace or merge, stop importing\n if (theExisting && (theImported.status.substr(0,7)!="replace") && (theImported.status.substr(0,5)!="merge"))\n return i;\n // assemble tags (remote + existing + added)\n var newTags = "";\n if (config.macros.importTiddlers.importTags)\n newTags+=theImported.getTags() // import remote tags\n if (config.macros.importTiddlers.keepTags && theExisting)\n newTags+=" "+theExisting.getTags(); // keep existing tags\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newTags+=" "+config.macros.importTiddlers.newTags; // add new tags\n theImported.set(null,null,null,null,newTags.trim());\n // set the status to 'added' (if not already set by the 'ask the user' UI)\n theImported.status=(theImported.status=="")?'added':theImported.status;\n // do the import!\n store.addTiddler(theImported);\n store.setDirty(true);\n }\n return(-1); // signals that we really finished the entire list\n}\n//}}}\n\n//{{{\nfunction importStopped()\n{\n var theList = document.getElementById('importList');\n var theNewTitle = document.getElementById('importNewTitle');\n if (!theList) return;\n if (config.macros.importTiddlers.index==-1)\n importReport(); // import finished... generate the report\n else\n {\n // DEBUG alert('import stopped at: '+config.macros.importTiddlers.index);\n // import collision... show the ask panel and set the title edit field\n document.getElementById('importAskPanel').style.display='block';\n theNewTitle.value=theList.options[config.macros.importTiddlers.index].value;\n }\n}\n//}}}\n
IM activities describe information management: find, create, receive, acquire, monitor, classify (for records management), index (for content management), safeguard, verify (for legal accuracy), organize, store, access, use, collaborate, send, route, disseminate, publish, transfer (alienate), archive and dispose. The information architecture will promote an information environment in which all IM activities are identified, described and facilitated.
Information Management is not conducted as an end in itself: it occurs in a context. Accordingly, this section of the JIA described the information context from three angles: business & information flow maps (describing major DND/CF processes supported by legal officers), business lines (describing major services provided by the Office of the JAG to its clients) and user interviews.
All content-based information requirements will be inventoried and the inventory will be maintained. For example, Canadian Criminal case law, Status of Forces Agreements (~SOFAs), NDA legislative amendment historical records are all example of content-based information requirements. Information requirements will be inventoried and the inventory will be maintained.
Information resources mirror information requirements. They represent whatever platform, database, online service, library, records, etc. used to meet the requirements. Examples would include [[Lexis-Nexis|http://www.quicklaw.ca/]] – a commercial online databank service for lawyers. Information resources will be inventoried and the inventory will be maintained.
/***\n''InlineJavascriptPlugin for ~TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#InlineJavascriptPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nInsert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.\n!!!!!Usage\n<<<\nWhen installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.\n\n''Deferred execution from an 'onClick' link''\nBy including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.\n\n''External script source files:''\nYou can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.\n\n''Defining javascript functions and libraries:''\nAlthough the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).\n\nTo ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.\n\nSince the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.\n\n''Creating dynamic tiddler content''\nAn important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:\n* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.\n* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.\n* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.\n\nIf your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.\n\n//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//\n\n''Accessing the ~TiddlyWiki DOM''\nThe plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.\n\nAccess to this DOM element allows you to create scripts that can:\n* vary their actions based upon the specific location in which they are embedded\n* access 'tiddler-relative' information (use findContainingTiddler(place))\n* perform direct DOM manipulations (when returning wikified text is not enough)\n<<<\n!!!!!Examples\n<<<\nan "alert" message box:\n{{{\n<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>\n}}}\n<script>alert('InlineJavascriptPlugin: this is a demonstration message');</script>\n\ndynamic output:\n{{{\n<script>return (new Date()).toString();</script>\n}}}\n<script>return (new Date()).toString();</script>\n\nwikified dynamic output:\n{{{\n<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>\n}}}\n<script>return "link to current user: [["+config.options.txtUserName+"]]";</script>\n\ndynamic output using 'place' to get size information for current tiddler\n{{{\n<script>\n if (!window.story) window.story=window;\n var title=story.findContainingTiddler(place).id.substr(7);\n return title+" is using "+store.getTiddlerText(title).length+" bytes";\n</script>\n}}}\n<script>\n if (!window.story) window.story=window;\n var title=story.findContainingTiddler(place).id.substr(7);\n return title+" is using "+store.getTiddlerText(title).length+" bytes";\n</script>\n\ncreating an 'onclick' button/link that runs a script\n{{{\n<script label="click here">\n if (!window.story) window.story=window;\n alert("Hello World!\snlinktext='"+place.firstChild.data+"'\sntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");\n</script>\n}}}\n<script label="click here">\n if (!window.story) window.story=window;\n alert("Hello World!\snlinktext='"+place.firstChild.data+"'\sntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");\n</script>\n\nloading a script from a source url\n{{{\n<script src="demo.js">return "loading demo.js..."</script>\n<script label="click to execute demo() function">demo()</script>\n}}}\nwhere http://www.TiddlyTools.com/demo.js contains:\n>function demo() { alert('this output is from demo(), defined in demo.js') }\n>alert('InlineJavascriptPlugin: demo.js has been loaded');\n<script src="demo.js">return "loading demo.js..."</script>\n<script label="click to execute demo() function">demo()</script>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.01.05 [1.4.0]''\nadded support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.\n''2005.12.13 [1.3.1]''\nwhen catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski\n''2005.11.09 [1.3.0]''\nfor 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content\nBased on a suggestion by BradleyMeck\n''2005.11.08 [1.2.0]''\nhandle loading of javascript from an external URL via src="..." syntax\n''2005.11.08 [1.1.0]''\npass 'place' param into scripts to provide direct DOM access \n''2005.11.08 [1.0.0]''\ninitial release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.inlineJavascript= {major: 1, minor: 4, revision: 0, date: new Date(2006,1,5)};\n\nconfig.formatters.push( {\n name: "inlineJavascript",\n match: "\s\s<script",\n lookahead: "\s\s<script(?: src=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: label=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?\s\s>((?:.|\s\sn)*?)\s\s</script\s\s>",\n\n handler: function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n if (lookaheadMatch[1]) { // load a script library\n // make script tag, set src, add to body to execute, then remove for cleanup\n var script = document.createElement("script"); script.src = lookaheadMatch[1];\n document.body.appendChild(script); document.body.removeChild(script);\n }\n if (lookaheadMatch[2] && lookaheadMatch[3]) { // create a link to an 'onclick' script\n // add a link, define click handler, save code in link (pass 'place'), set link attributes\n var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);\n link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}\n link.code="function _out(place){"+lookaheadMatch[3]+"};_out(this);"\n link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";\n }\n else if (lookaheadMatch[3]) { // run inline script code\n var code="function _out(place){"+lookaheadMatch[3]+"};_out(w.output);"\n code=code.replace(/document.write\s(/gi,'place.innerHTML+=(');\n try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }\n if (out && out.length) wikify(out,w.output);\n }\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n} )\n//}}}\n
Inquiries about this discussion paper should be directed to [[Major Patrick Cormier|Maj Patrick Cormier]], Project Director of the [[CIMP]].
The Office of the JAG must be prudent in its choice of IM/IT solutions and avoid duplicate solutions [[already provided for|Assumptions]] and/or developed elsewhere in government. As a result of continuous monitoring of and coordination with IM Group and the [[IT SSO]] of [[PW&GSC]], interdependencies will be identified and impacts analyzed on an ongoing basis, in order to identify if [[CIMP]] requirements can be fulfilled suchsolutions.
The expression "JAG & Deputies" consists, by analogy, to the senior partners of a law firm:\n* The [[Judge-Advocate General|http://www.forces.gc.ca/jag/office/jag_bio/default_e.asp]] of the Canadian Forces; and\n* All legal officers at the rank of Colonel, except the [[Chief Military Trial Judge|http://www.dnd.ca/cmj/intro_e.asp]] who, by nature of the statutory appointment under the [[National Defence Act|http://laws.justice.gc.ca/en/N-5/text.html]], is independent.
The //Standardized IM Framework// ([[SIMF]]) of the Office of the JAG includes the following Information Management Directives, or "~IMDs":\n\n|>|>|>|>|>|!''JAG IM Directives''|\n|bgcolor(gray): @@color(white): ''IMD 01''@@ |bgcolor(gray): @@color(white): ''IMD 04''@@ |bgcolor(gray): @@color(white): ''IMD 07''@@ |bgcolor(gray): @@color(white): ''IMD 10''@@ |bgcolor(gray): @@color(white): ''IMD 13''@@ |bgcolor(gray): @@color(white): ''IMD 20''@@ |\n| ''Policy Direction'' | ''Case Files'' | ''Records Control Storage'' | ''Pubs Mgmt'' | ''IM Edu Trg'' | ''Conflict Of Interest'' |\n| Outlines the framework for the planning and conduct of information management (IM) in the Office of the JAG | Sets what are case files, how they are opened, managed and closed; establishes and standardizes case templates | Sets how records under the custody of the Office of the JAG are to be controlled, safeguarded and stored | Sets how publications under the custody of the Office of the JAG are to be published and managed thereafter | Establishes initial and periodic IM Education and Training for all members of the Office of the JAG | Establishes how conflicts of interest are searched and vetted before new matters are assigned to legal officers |\n|bgcolor(gray): @@color(white): ''IMD 02''@@ |bgcolor(gray): @@color(white): ''IMD 05''@@ |bgcolor(gray): @@color(white): ''IMD 08''@@ |bgcolor(gray): @@color(white): ''IMD 11''@@ |bgcolor(gray): @@color(white): ''IMD 14''@@ |bgcolor(gray): @@color(white): ''IMD 21''@@ |\n| ''Master File Plan'' | ''Legal Reference Files'' | ''Offsite Storage Disposal'' | ''JAG App Mgmt'' | ''JAG IM Program'' | ''DDCS'' |\n| Establishes the JAG Unique File Plan, including the hierarchical index for material of precedential value | Sets what are legal reference files, how they are opened, managed and closed; standardizes associated workflow | Sets how records under the custody of the Office of the JAG can be stored offsite and disposed of | Establishes how applications and software under the custody of the Office of the JAG are to be managed at an Information Technology level | Establishes the basis for a permanent JAG IM Program, including roles and responsibilities for the JAG IM Team, management and legal officers | Directive of a general nature promulgated by the JAG, under authority of the [[National Defence Act|http://laws.justice.gc.ca/en/n-5/text.html]], establishing IM standards in the Directorate of Defence Counsel Services |\n|bgcolor(gray): @@color(white): ''IMD 03''@@ |bgcolor(gray): @@color(white): ''IMD 06''@@ |bgcolor(gray): @@color(white): ''IMD 09''@@ |bgcolor(gray): @@color(white): ''IMD 12''@@ |bgcolor(gray): @@color(white): ''IMD 15''@@ |bgcolor(gray): @@color(white): ''IMD 22''@@ |\n| ''Decentralized RM'' | ''Admin Files'' | ''Web Logs'' | ''ATIP'' | ''IM Assessment'' | ''CMPS'' |\n| Establishes the services, authorities and roles pertaining to decentralized records management | Sets what are administrative files, how they are opened, managed and closed; standardizes associated workflow | Sets the intake workflow for correspondence and web logs according to the type of content. Establishes subject-based web logs and prescribes their use | Establishes how personal information is protected and how information is provided in answer to ATIP requests | Sets how Information Management is to be evaluated on a yearly basis and sets performance indicators for IM | Directive of a general nature promulgated by the JAG, under authority of the [[National Defence Act|http://laws.justice.gc.ca/en/n-5/text.html]], establishing IM standards in the Canadian Military Prosecution Service |\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^\n
The [[architecture components|Architecture Components]] of the JAG Information Architecture ([[JIA]]) include [[Recorded Information]]. Recorded Information encompasses data management, publications management and records management. A //sine qua non// condition of a good records management program is to have record groups and record series that align themselves naturally with all the business lines of the organization. __Otherwise, users are constantly in a state of undertainty on how to best create their files plans, to update and to manage them__.\n\nPrivate law firms have successfully managed their files by organizing them along three record groups:\n* //Client files//, by typically opening one file for each matter entrusted by the client to the firm;\n* //Legal Reference Files//. These files are often the "folders in partners offices" containing [[Material of precedential value]], in the form of binders or files with accumulated case law, law journal articles, doctrine extracts, etc.; and\n* //Administrative Files//: all other files needed to run the firm - financial, human resources, procurement, etc.\nIn the Office of the JAG, at the time of writing (March 2006), there were approximately 50 file plans in use, including file plans of Deputy ~Judge-Advocates practicing solo on bases. All file plans were different and based on the [[DSCDS]]. None reflected the three record groups alluded to above, because, for example, the [[DSCDS]] did not contain the required primary numbers to adopt the logic of "client-matter".\n\nBecause of this organizational shortcoming, one of the first actions of the [[CIMP]] was to derive a new ~JAG-wide, unique Master File Plan, founded upon an amended [[DSCDS]]. The DSCDS is in the process of being amended to include the following new record groups and record series:\n* ''Record Group #1 – Client Files''\n** 6530 Legal Services – Client Files (main primary for Client subjects of a general nature that don’t fall into the following specific primaries) \n** 6532 Legal Services – Client Files – Corporate Legal Opinions\n** 6534 Legal Services – Client Files – Disciplinary Files\n** 6536 Legal Services – Client Files – Court Martial\n** 6538 Legal Services – Client Files – Disciplinary and Summary Trials\n** 6540 Legal Services – Client Files – Service Estate and Elections\n** 6542 Legal Services – Client Files – Grievances\n** 6544 Legal Services – Client Files – Legislative, Regulatory and Policy Matters\n** 6546 Legal Services – Client Files – Military Exercises\n** 6548 Legal Services – Client Files – Military Personnel\n** 6550 Legal Services – Client Files – Operational Law\n** 6552 Legal Services – Client Files – Training to Canadian Forces\n** 6554 Legal Services – Client Files – Cabinet Confidences\n** 6556 Legal Services – Client Files – Claims Against the Crown\n** 6558 Legal Services – Client Files – Claims by the Crown\n** 6560 Legal Services – Client Files – Crown Prosecution\n** 6562 Legal Services – Client Files – Defence\n** 6564 Legal Services – Client Files – Ex Gratia Payments\n** 6599 Legal Services – Client Files – Pro Bono\n* ''Record Group #2 – Legal Reference Files''; to be organized in accordance with a new hierarchical [[JAG Master Index]] essentially based on the three JAG Pillars:\n** 6510 Legal Services – Reference (main primary for Reference subjects of a general nature that don’t fall into the following subjects) \n** 6513 Legal Services – Reference – Military Law (General)\n** 6515 Legal Services – Reference – Military Justice\n** 6517 Legal Services – Reference – Military Administrative Law\n** 6519 Legal Services – Reference – Operational Law\n** 6521 Legal Services – Reference – ~Non-Military Areas of Practice\n* The following record series are also proposed:\n** 6500 Legal Services – General (main block primary for subjects of a general nature that don’t fall into any specific Legal Services block primary)\n** 6501 Legal Services – Service Level Agreements\n* ''Record Group #3 – Administrative Files''; the third record group to be used in the Office of the JAG, administrative files, will rely on existing [[DSCDS]] primary index numbers.\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
The JAG Master Index is part of the [[JAG Master File Plan]]. \n\nThe JAG Master Index is the unique hierarchical index of all military law topics, enabling the management of [[Material of precedential value]] throughout the [[Office of the JAG]]. The Master Index can be navigated only on the [[Defence Intranet Network|http://cimp.mil.ca/]]. Depending on context, the expression "JAG Master Index" sometimes refer to the actual [[Wiki|Wikis]] system that will contain all the [[Material of precedential value]].\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
The JAG Information Architecture is the deliverable of the [[CIMP]] to the [[Office of the JAG]]. It amplifies the [[Standardized IM Framework|SIMF]] taught at the [[CSPS]] in course [[I310]] by detailing each of the following six [[Architecture Inputs]] and nine [[Architecture Components]]:\n\n|>|!''Architecture Inputs''|>|>|!''Architecture Components''|\n| [[Compliance]] | [[Interdependencies]] | [[Information Context]] | [[Information Activities]] | [[IT]] |\n| [[Business Context]] | [[Constraints]] | [[Information Requirements]] | [[Roles, Services & Products]] | [[Recorded Information]] |\n| [[Empowerment]] | [[Trends & Opportunities]] | [[Information Resources]] | [[Standards, Education & Training]] | [[Optimization]] |\n|''//JAG Information Architecture//''|c\n\n[[Vision & Principles]] and [[Architecture Inputs]] shape [[Architecture Components]] which, in turn, shape [[JAG IM Directives]]. The JAG IM Directives provide guidance and direction to users in the [[Office of the JAG]] on how to best exploit and manage the information they manage.\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
Lessons learned in a military law context is crucial. \n\nTake for example a deployed US JAG Officer returning from a tour of duty. He will be debriefed, he will have to fill a detailed lessons learned form and complete an interview with lessons learned specialists. If warranted, this information will serve to update doctrine and training manuals, will go to US JAG Schools and serve to update their scenarios, exercises and training manuals, approximately in a total of ten days from the initial lessons learned debrief.\n\nAfter the delivery of the new [[JAG Information Architecture|JIA]] by the [[CIMP]] to the [[Office of the JAG]], we can have a similar process, with a better turnaround time. How? Because their is no need to wait for the return of the deployed legal officer. This update process will work as follows:\n* As explained in the [[Deployed Legal Officer]] scenario, casting Maj Larochelle; when a "significant legal event" occurs, the Military Law Center (or ~DLaw/T) will be notified in one or more of the following ways:\n** Maj Larochelle would post the event in the operation web log, or [[blog|Blogs]], and all training / legal officers involved in the development and maintenance of Operational Law manuals would immediately be notified because they subscribe to all feeds from deployed legal officers;\n** Maj Larochelle would change one or more pages in the [[JAG Master Index]], either by amending the topics directly or by initiating a discussion on one of the discussion pages: on both cases, again, all training / legal officers involved in the development and maintenance of Operational Law manuals would immediately be notified because the [[JAG Master Index]] is also syndicated via [[RSS]] feeds;\n* Upon notification, the training / legal officers have one resource to consult and amend, if warranted: the [[JAG Master Index]]. Based on these changes, they have one repository of course materials to update: the [[DLaw T Course Materials]] hosted on the [[Desire2Learn|http://www.desire2learn.com/products/products_learning_platform.asp]] platform deployed by the [[Defence Learning Network|http://www.dnd.ca/hr/dln-rad/engraph/home_e.asp]]. In both cases, changes are immediately, by definition, propagated to the entire Office of the JAG because these resources are accessed centrally.\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
Local Implementation Plans are the means by which regional offices, directorates and administrative support functions (//e.g.// finance, HR, Business Management, etc.) throughout the [[Office of the JAG]] will describe how they intend to move from their current IM practices to a [[JAG IM Directives]] compliant environment. They are introduced and explained at the [[RVG Retreat - June 06]] and will be completed by RVG Members between the end of June 2006 and due back to the Project Office by September 15th, 2006. Between 15 Sept 06 and the end of October, when the 2006 JAG CLE Workshop will be held, these Local Implementation Plans will be reviewed and unforeseen issues will be addressed. The [[CIMP]] will then seek approval by [[JAG & Deputies]] to launch [[Business Transformation]] and the new [[JAG IM Directives]] at the 2006 JAG CLE Workshop.\n\nSimply put, Local Implementation Plans describe how directorates and regional offices will implement the new [[JAG IM Directives]] until such time as the new [[IT]] capabilities are delivered by the [[CIMP]]. We must change the way we manage our information //before// these new [[IT]] capabilities are introduced. ''Until such time as the [[CIMP]] delivers all necessary [[IT]] capabilities, JAG corporate records will be managed in hard copy case books (see [[Case Templates]]).'' Only when the [[CIMP]] delivers the new IT environment, complying with the requirements of CGSB 72.14 "Records as Documentary Evidence", will that JAG policy shift to a "all JAG corporate records will be managed electronically".\n\nLocal Implementation Plans are signed by the director or AJAG and attest that the directorate or regional office will:\n* Implement the [[JAG Master File Plan]] and other [[JAG IM Directives]]\n* Adhere to the [[File Folder Convention]]\n* Adhere to the [[File Naming Convention]]\n* Adhere to the [[File Usage Convention]]\n* Specify how current content (current files) will be migrated to the new environment. As a best practice and suggested method, the plan should specify:\n** The date after which all new opened case files will be opened and managed in accordance with the new [[JAG IM Directives]], including -\n*** The use of case books (as opposed to a hard copy folder) based on the appropriate [[Case Templates]]\n*** The use of shared directories as explained in [[File Folder Convention]]\n** The scope of migration and transition period during which legacy information (from hard copy files, personal Q drives and shared directories) will be migrated to case books and shared directories, taking into account -\n*** The scope of migration should encompass, as a minimum, all "current" (opened) files and ideally also cover other important files, as identified by the director, AJAG or equivalent;\n*** During the transition period, all information within the scope of migration as previsouly identified should be exhaustively assigned to legal officers and a due date should be given for the migration of the information, such date being specified in the plan.\nThe template for these Plans and guidance on how to fill them will be offered at the [[RVG Retreat - June 06]].\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
<<defaultHome>> [[Read First]] [[Assumptions]] [[User Scenarios]] [[Web 2.0]] [[Business Transformation]] [[Feedback]] [[About]]
Major [[Patrick Cormier|http://claimid.com/fidelis]]\nProject Director of the [[CIMP]]\n[[Office of the Judge-Advocate-General|Office of the JAG]]\n[[National Defence|http://www.forces.gc.ca/site/home_e.asp]]\n\n(613) 992-2703\n[[email me|mailto:cormier.jglrpforces.gc.ca]]
Managing information simply and efficiently, in the context of the Office of the JAG, entails the following:\n* The __1,200 or so topics of military law__ need to be easily searched, maintained and updated by all lawyers, based on the new hierarchical [[JAG Master File Plan]], leveraging a [[Wiki|Wikis]]-type content management system (also called the [[JAG Master Index]]);\n* Legal officers need to be automatically advised by [[RSS]] feeds of changes to military law topics - maintained in [[Wikis]] and [[Search Collections]] - pertaining to their jobs or to their areas of interest;\n* __Natural search language search capabilities__, leveraging [[Search Collections]], need to be available;\n* __Mass emails__ need to be redirected to [[Blogs]] based on their content, rather than cluttering 300 email inbox;\n* __Communities__ should be available and bring together all legal officers in common shared virtual spaces, including reservists, deployed legal officers and Deputy Judge Advocates practicing solo on bases; \n* __Enterprise bookmarking and tagging__ should be enabled in order to leverage the usefulness of each unique decision to bookmark and tag a resource into a ~JAG-wide enhancement of common resources, leveraging [[Social Tagging]];\n* __Automatic Sharing of Contacts__ should be in effect: each time a legal officer, by attending a course or a conference, or in any given case; makes contact with someone that is a valuable contact for the entire Office of the JAG, that person should be entered as such in the [[Practice / Case Management System|PCMS]].\nIn addition, considering the unique role of the Directorate of Law for Training (~DLaw/T) and the proposed Military Law Center (or Institute), there are several [[DLaw T Requirements]] that warrant specific consideration from a "manage information efficiently" perspective. Several of these requirements translate into significant [[business transformation|Business Transformation]] in the following areas:\n* [[DLaw T Course Materials]]\n* [[Lessons Learned]]\n* [[The Web As A Resource]]\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
Material of precedential value is litterally //anything// deemed by a lawyer has having the potential to constitute a source of law:\n* Statutes and regulations\n* Case law - decisions by tribunals\n* Doctrine - articles in Law Journals, Law Treatises, Law Compendiums, etc.\n* Treaties and international law customs\n* Etc...\nLawyers need two ingredients before they can deliver legal advice and services to their clients: facts from their clients and //access to legal information in their area of practice//. A significant portion of that legal information needs to be material of precedential value. Lawyers in North America are generally fortunate, in the sense that they have access to a generous body of legal information in most areas of practice: criminal law, family law, bankruptcy and insolvency, etc.. Even US JAG lawyers benefit from a "critical mass" effect - they are sufficiently numerous to warrant their own law journals, law schools, etc..\n\nCanadian legal officers do not have sufficient access to material of precedential value in their areas of practice: Military Justice, Operational Law and Military Administrative Law - there is little published in Canadian military law in terms of publicly available case law, doctrine, etc.. Because of this capability deficiency, the [[CIMP]] was sponsored by the ~Judge-Advocate-General and efforts are underway to empower legal officers to [[manage their legal information efficiently|ManageInfoEfficiently]], resulting in the adoption of a [[JAG Information Architecture|JIA]] derived from a [[Standardized IM Framework|SIMF]] and in the need for signifiant [[business transformation|Business Transformation]].\n\nThe end result of all these efforts will be that Canadian legal officers will, for the first time in the history of the Office of the JAG, have complete access to material of precedential value in all areas of Canadian military law.\n\nHow will this happen? Make sure you check [[Business Transformation]] and the [[Roadmap]].\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
You can find here the main headings of this discussion paper.
/***\n|Name|NewHereCommand|\n|Source|http://simonbaird.com/mptw/#NewHereCommand|\n|Version|1.0|\n\nCode originally by ArphenLin. Small tweak by SimonBaird\nhttp://aiddlywiki.sourceforge.net/NewHere_demo.html#NewHereCommand\nTo use this you must edit your ViewTemplate and add newHere to the toolbar div, eg\n{{{<div class='toolbar' macro='toolbar ... newHere'></div>}}}\n***/\n\n//{{{\n\nconfig.commands.newHere = {\n text: 'new here',\n tooltip: 'Create a new tiddler tagged as this tiddler',\n handler: function(e,src,title) {\n if (!readOnly) {\n clearMessage();\n var t=document.getElementById('tiddler'+title);\n story.displayTiddler(t,config.macros.newTiddler.title,DEFAULT_EDIT_TEMPLATE);\n story.setTiddlerTag(config.macros.newTiddler.title, title, 0);\n story.focusTiddler(config.macros.newTiddler.title,"title");\n return false;\n }\n }\n};\n\n//}}}
The [[Office of the Judge-Advocate General|http://www.forces.gc.ca/jag/main_e.asp]] is the Canadian legal office providing legal advice and services:\n* To all levels of command of the Canadian Forces, of the Department of National Defence and to the federal government\n* In the areas of Military Justice, Operational Law and Miliary Administrative Law\nThe Office of the JAG comprises 188 regular force and reserve forces legal officer positions. The regular force legal officers are employed throughout the CF, in Canada and abroad as follows:\n* National Defence Headquarters in Ottawa;\n* eight Assistant Judge Advocate General (AJAG) offices, seven in Canada and one in Germany;\n* ten Deputy Judge Advocate (DJA) offices across Canada;\n* four Regional Military Prosecutor (RMP) offices across Canada;\n* Canada Command, Canadian Forces Expeditionary Command and Canadian Forces Operational Support Command;\n* Supreme Headquarters Allied Powers (Europe) in Belgium;\n* CF Joint Operations Group Headquarters and the Royal Military College of Canada (RMC) in Kingston;\n* Deputy ~Commander-in-Chief North American Aerospace Defence Command Headquarters (in Colorado Springs);\n* with CF contingents deployed overseas — during 2001–2002, at four locations in Bosnia, as well as in Afghanistan, the Gulf of Oman and at MacDill Air Force Base in Florida; and\n* in training with CF formations and units participating in major national and international exercises.\n\nLike their regular force colleagues, reserve force legal officers are employed throughout the CF and on operations. They are also integrated into the defence and prosecution functions of the military justice system.\n\nThe JAG is statutorily responsible to the [[Minister of National Defence|http://www.forces.gc.ca/site/minister/index_e.asp]] and “accountable” for the legal advice given to the Chief of the Defence Staff, the military chain of command, and to the Deputy Minister. This clear accountability structure was designed to enhance the integrity of the Office of the JAG and ensure the independence of the JAG from the chain of command in the provision of legal advice in all areas including military justice.\n\nThis independent role is reinforced in Queen’s Regulations and Orders (QR&O) articles 4.081(1) and (4), which state that all legal officers whose duty is the provision of legal services shall be posted within the Office of the JAG and, in respect of the performance of their duties, a legal officer is not subject to the command of an officer who is not a legal officer.
Continuous optimization is in effect and supported by a permanent JAG IM Program. The JAG IM Program is explicited in JAG IMD 14 (see the [[JAG IM Directives]]). This Program will be maintained by the JAG IM Team and explicitly connected to the larger IM Group, Departmental and Government of Canada IM Programs.
A Protected B ("PB") network is necessary in the Office of the JAG because a significant portion of information contained in client files is subject to the [[Solicitor-Client Privilege|http://en.wikipedia.org/wiki/Attorney-client_privilege]]. In accordance with the [[Government Security Policy|http://www.tbs-sct.gc.ca/pubs_pol/gospubs/TBM_12A/gsp-psg_e.asp]] and the JAG policy decision about electronic information subject to the ~Solicitor-Client Privilege, this information is PROTECTED B (“PB”). \n\nAs a result, any JAG wide application managing information subject to the ~Solicitor-Client Privilege, //i.e.//, with such information flowing between the workstation and a central server; such application would need to be deployed with a certified and accredited PB network. \n\nIn addition, due to the nature of the relationship between Defence Counsel and their clients, the [[Directorate of Defence Counsel Defence Services|http://www.forces.gc.ca/jag/military_justice/ddcs/default_e.asp]] (DDCS) must manage its client files electronic information from within a distinct PB Network. However, nothing prevents DDCS from sharing the same [[Portal]] because the information in the [[Portal]] is not subject to the ~Solicitor-Client Privilege.
The Office of the JAG currently has no Practice / Case Management capability, as opposed to Justice Canada and several Departmental Legal Services Units, using, for example, //iCase// and //~CaseView// (not to mention //~RingTail//). This capability deficiency can be efficiently solved with a Commercial and Off the Shelf (COTS) solution from the software industry catering to law firms. \n\n__Note__: Practice / Case Management Software is //not// the same as generic case management software offerings. Generic case management solutions do not meet the requirements of law firms.
[[Public Works and Government Services Canada|http://www.pwgsc.gc.ca/text/index-e.html]] is a federal Department working primarily with other Government of Canada departments and agencies.
<!---\nI've just tweaked my gradient colours and the topMenu bit. See HorizontalMainMenu.\n--->\n<!--{{{-->\n<div class='header' macro='gradient vert #000 #069'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div id='topMenu' refresh='content' tiddler='MainMenu'></div>\n</div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>\n<!--}}}-->\n
function onClickDefaultHome(e) {\nstory.closeAllTiddlers();\nconfig.options.txtDefaultTiddlers = "";\nsaveOptionCookie('txtDefaultTiddlers');\nvar start = store.getTiddlerText("DefaultTiddlers");\nif(start)\nstory.displayTiddlers(null,start.readBracketedList());\n}\n\nconfig.macros["defaultHome"] = {label: "Home", prompt: "Show the default tiddlers", title: "Home"};\nconfig.macros.defaultHome.handler = function(place) {\ncreateTiddlyButton(place,this.label,this.prompt,onClickDefaultHome);\n\n}
With a [[Protected B Network|PB Network]], [[Classified Network]],[[Document and Records Management|DRMS]] and [[Practice and Case Management|PCMS]] systems; the [[Office of the JAG]] will be well equipped to manage its client files and administrative files, however, it will not be in position to exploit its legal reference files – or “[[Material of precedential value]]”. The Legal Information Portal will fulfil this requirement. Legal Reference files are subject-based and based on a hierarchical index called the [[JAG Master Index]].\n\nThe JAG Portal will likely be based on [[Drupal]] and possess the following features and characteristics from the end user perspective:\n* ''Resizable GC Common Look & Feel template''. Ensure that a stable, flexible and adaptive [[Common Look & Feel]] template is ready, enabling, for example, the modification of menu items depending on user category. The width should adapt to user screen resolution, down to 800” x 600”\n* ''Bilingual''\n* ''User login'', ensuring that readers are presented with menu options and content corresponding to their user category (//e.g.// legal officer, support staff, management, etc.)\n* ''Content Categorization'', that is, the possibility of adding one or multiple categories to all content for easy retrieval based on categories through the use of controlled vocabularies and [[free tagging|Social Tagging]]\n* ''File Upload and download'', enabling users to attach files to content posted in the portal. The portal should support private downloading in order to avoid direct linking to files from external sources, defeating the user access restrictions based on user roles\n* ''Forums'', or public virtual spaces in which members can interact, collaborate, post and retrieve information. Communities are based on forums (online discussion rooms). Forums can be open (anyone can join them) or closed (membership by invitation only)\n* ''Comments'': the ability to post comments and initiate threaded discussions on any content posted in the Portal\n* ''Syndicated Weblogs'' (or [[blogs|Blogs]]), each blog corresponding to one (or many) categories, presented on a web page; each blog entry possessing a distinct [[permalink|http://en.wikipedia.org/wiki/Permalink]]. Additional content sent to the blog is added at the top of the page and previous content is “pushed down”. Such blogs can be used, for example, to [[redirect generic emails|Email Overload]], sent to distribution lists, from individual email inboxes (potentially 300+ users) to specific blogs. Automatic syndication via [[RSS]] allows users to subscribe to these blogs, such subscriptions being mandatory or optional \n* ''Syndicated Wiki-based Content Management'', each [[wiki|Wikis]] corresponding to a topic of interest to several members of the readership and requiring updates / version control. A prime example of this would be the [[JAG Master Index]], containing approximately 1,200 military law topics - each topic could be managed as a [[wiki page|Wikis]] . Automatic syndication of all wikis ensures that their content can be subscribed to, such subscriptions being mandatory or optional depending on the profile of the user\n* ''Syndicated Enterprise Bookmarking & Tagging Management''. Corporate bookmarks, as currently available from the MS Internet Explorer “Favorites” menu, are rarely updated and provide very little added legal value in the day-to-day work of legal officers. Each lawyer is left to his or her own devices to bookmark, over time, useful web sites, and such book marking does not benefit other users. [[Social bookmarking / tagging|Social Tagging]] makes the concept of rigid corporate bookmarks obsolete \n* ''Syndicated Search Collections'', enabling open, customizable and dynamic searches. [[Search collections|Search Collections]] are an essential ingredient of the future information environment of the Office of the JAG and will enable [[efficient information management|ManageInfoEfficiently]]\n
Chers collègues et amis francophones,\n\nVeuillez noter que le présent document, en tant que document de travail ("discussion paper"), est en constante évolution - comme vous pourrez le constater lorsque [[vous serez abonné|http://www.feedblitz.com/f/?Sub=48386]]. Lorsque le document sera stabilisé, il sera traduit en français. D'ici là, n'hésitez pas à me contacter si vous avez des questions!\n\nCordialement,\n\n[[Maj Patrick Cormier]]\n\nPS: en attendant: [[La pratique du droit: Comment exploiter les technologies web 2.0?|http://www.slaw.ca/2006/05/08/pratique-droit-exploiter-technologies-web20]]
/***\n| Name:|QuickOpenTagPlugin|\n| Purpose:|Makes tag links into a Taggly style open tag plus a normal style drop down menu|\n| Creator:|SimonBaird|\n| Source:|http://simonbaird.com/mptw/#QuickOpenTagPlugin|\n| Requires:|TW 2.x|\n| Version|1.1 (7-Feb-06)|\n\n!History\n* Version 1.1 (07/02/2006)\n** Fix Firefox 1.5.0.1 crashes\n** Updated by ~BidiX[at]~BidiX.info\n* Version 1.0 (?/01/2006)\n** First release\n\n***/\n//{{{\n\n//⊻ ⊽ ⋁ ▼ \n\nwindow.createTagButton_orig_mptw = createTagButton;\nwindow.createTagButton = function(place,tag,excludeTiddler) {\n var sp = createTiddlyElement(place,"span",null,"quickopentag");\n createTiddlyLink(sp,tag,true,"button");\n var theTag = createTiddlyButton(sp,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tag]),onClickTag);\n theTag.setAttribute("tag",tag);\n if(excludeTiddler)\n theTag.setAttribute("tiddler",excludeTiddler);\n return(theTag);\n};\n\nconfig.macros.miniTag = {handler:function(place,macroName,params,wikifier,paramString,tiddler) {\n var tagged = store.getTaggedTiddlers(tiddler.title);\n if (tagged.length > 0) {\n var theTag = createTiddlyButton(place,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);\n theTag.setAttribute("tag",tiddler.title);\n theTag.className = "miniTag";\n }\n}};\n\nconfig.macros.miniTag.dropdownchar = (document.all?"▼":"▾"); // the fat one is the only one that works in IE\n\nconfig.macros.allTags.handler = function(place,macroName,params)\n{\n var tags = store.getTags();\n var theDateList = createTiddlyElement(place,"ul",null,null,null);\n if(tags.length === 0)\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n for (var t=0; t<tags.length; t++)\n {\n var theListItem =createTiddlyElement(theDateList,"li",null,null,null);\n var theLink = createTiddlyLink(theListItem,tags[t][0],true);\n var theCount = " (" + tags[t][1] + ")";\n theLink.appendChild(document.createTextNode(theCount));\n\n var theDropDownBtn = createTiddlyButton(theListItem," "+config.macros.miniTag.dropdownchar,this.tooltip.format([tags[t][0]]),onClickTag);\n theDropDownBtn.setAttribute("tag",tags[t][0]);\n }\n};\n\n\nsetStylesheet(\n ".quickopentag { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }\sn"+\n ".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }\sn"+\n ".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}\sn"+\n "a.miniTag {font-size:150%;}\sn"+\n "",\n"QuickOpenTagStyles");\n\n//}}}\n\n/***\n<html>⊻ ⊽ ⋁ ▼ ▾</html>\n***/\n
"RSS" stands for Really Simple Syndication. Web sites that offer "RSS feeds" offer the option to their readers of subscribing to these feeds. This technology represents a fundamental difference in how the web is experienced: instead of having to regularly surf sites of interest, users can subscribe to a variety of feeds and have all these feeds aggregated in a [[news aggregator|http://en.wikipedia.org/wiki/News_aggregator]]^^1^^. More information on RSS can be found in Wikipedia in the [[RSS|http://en.wikipedia.org/wiki/RSS_%28file_format%29]] article.\n\nNote 1: by way of example, see this screenshot of GreatNews.
The Requirements Validation Group (RVG) consists in one legal officer per directorate and regional office, one representative of each specialized function in JAG (Comptrollership, Human Resources, IT...) and matrix support representatives from National Defence Headquarters. \n\nThe objectives of the June 2006 RVG Retreat are:\n* ''To launch'' [[Business Transformation]], phase I to be completed by the end of 2006. [[Business Transformation]] will start with a survey on the state of Information Management in the Office of the JAG, to be completed by RVG members shortly before the retreat. The results of the survey will be presented on Day 1 of the Retreat (see schedule below)\n* ''To impart knowledge to RVG members'', thereby empowering them to become "IM Champions" and resource-persons in their own organizations within their regional office and directorate. RVG Members (legal officers and other selected JAG members) will be responsible for the development and implementation of [[Local Implementation Plans]]\n* ''To validate the integrated IM environment'', put forward by the [[CIMP]]. In other words, we will expose to participants what we intend to provide, to change, etc. - and members of the group will have many opportunities throughout this 3-day retreat to significantly influence the shaping of the future JAG environment. Active participation and feedback is therefore necessary.\nTo achieve these objectives, the current draft schedule for the retreat is as follows:\n|!|!DAY 1 - WED 21 JUNE 06|!DAY 2 - THU 22 JUNE 06|!DAY 3 - FRI 23 JUNE 06|\n| ''0800'' | REGISTRATION |>| DOORS OPEN |\n| ''0830'' | Introduction by Project Leader (DJAG/COS) & Ice Breaker | Syndicate: [[User Scenarios]] / [[Case Templates]] | Syndicate & Plenary: Business Processes |\n| ''0900'' | JAG IM Survey Results |~|~|\n| ''0915'' | Modern Law Practice |~|~|\n| ''1015'' |>|>| ''BREAK'' |\n| ''1030'' | Records Management 101 & [[JAG Master File Plan]] | Plenary: [[User Scenarios]] / [[Case Templates]] | Syndicate & Plenary: [[Information Requirements]] Inventory |\n| ''1100'' |~|~|~|\n| ''1130'' | Project Roadmap | Syndicate: [[Local Implementation Plans]] |~|\n| ''1200'' |>|>| ''LUNCH'' |\n| ''1300'' | [[JAG IM Directives]] | Plenary: [[Local Implementation Plans]] | Syndicate & Plenary: Electronic [[Case Templates]] Definition |\n| ''1330'' | [[JAG Case Templates|Case Templates]] |~|~|\n| ''1400'' | [[JAG Master Index]] | The Future IT Environment: [[PB Network]], [[Classified Network]], [[DRMS]], [[PCMS]], [[WCMS|Drupal]] |~|\n| ''1445'' |>|>| ''BREAK'' |\n| ''1500'' | Syndicate: [[JAG Master File Plan]] | SHOWCASE SESSION | Syndicate: Final Survey |\n| ''1530'' |~|~|~|\n| ''1600'' | Plenary on [[JAG Master File Plan]] |~| Retreat Assessment |\n|>|>|>| //day ends at 16:30 hrs// |\nPlease use the [[Feedback]] form if you want to make a suggestion concerning this draft schedule.\n\n
\n|!Need help navigation this document? You can navigate this document (see screenshot below):|\n* By clicking on the major headings (@@color(red):''1''@@) listed in the top horizontal menu; \n* By clicking on any of the hyperlinks contained throughout the text (@@color(red):''2''@@: internal links - for example [[Assumptions]] and [[User Scenarios]]; or external links such as [[Blogs|http://en.wikipedia.org/wiki/Blog]]); \n* You can always come back to this initial view by clicking on ''Home'' button at the top left of this page (@@color(red):''3''@@);\n* If you are done reading any given [[tiddler|http://en.wikipedia.org/wiki/Tiddler]] (a tiddler is a section of text with a title, such as "Read First", that you are currently viewing), you can close it (@@color(red):''4''@@);\n* On the other hand, if you want to focus your attention on only one [[tiddler|http://en.wikipedia.org/wiki/Tiddler]], you can close all other [[tiddlers|http://en.wikipedia.org/wiki/Tiddler]] (@@color(red):''5''@@);\n* You can also type in keywords in the Search box (@@color(red):''6''@@) and you will be presented with a Search Results page; \n* Many [[tiddlers|http://en.wikipedia.org/wiki/Tiddler]] include one or several contextual menus for navigation to related pages - click on the drop-down arrow to access them (@@color(red):''7''@@); \n* By directly accessing [[tiddlers|http://en.wikipedia.org/wiki/Tiddler]] in the Side Bar menu (@@color(red):''8''@@); and\n* On a final note, ''do not use the browser back'' (or forward) buttons because that will take you away from this page. All the content of this document is in fact contained in a single HTML page.\n__Note__: Information on the tool used to prepare this document can be found in the [[About]] section. Your comments and suggestions are welcome in the [[Feedback]] page.\n\n^^Next: [[Assumptions]] (you can also go back to the [[Home]] page or leave some [[Feedback]])^^\n\n[img[TW Navigation Screenshot|http://www.gov20.info/files/twsc.gif]]
The Office of the JAG will systematically manage its data, records and publications, together labelled as “recorded information”; by promoting a revitalized records management program leveraging the //Defence Subject Classification and Disposition System// ([[DSCDS]]), using new record groups and record series adapted to the practice of law. These new record groups and series are all explicited in JAG IMD 02 (see the [[JAG IM Directives]]). Corporate records will fall into three record groups: client files, legal reference files and administrative files.\n\n''Until such time as the [[CIMP]] delivers all necessary [[IT]] capabilities, JAG corporate records will be managed in hard copy case books (see [[Case Templates]]).'' Only when the [[CIMP]] delivers the new IT environment, complying with the requirements of CGSB 72.14 "Records as Documentary Evidence", will that JAG policy shift to a "all JAG corporate records will be managed electronically".
/***\n| Name:|RenameTagsPlugin|\n| Purpose:|Allows you to easily rename tags|\n| Creator:|SimonBaird|\n| Source:|http://simonbaird.com/mptw/#RenameTagsPlugin|\n| Version:|1.0.1 (5-Mar-06)|\n\n!Description\nIf you rename a tiddler/tag that is tagging other tiddlers this plugin will ask you if you want to rename the tag in each tiddler where it is used. This is essential if you use tags and ever want to rename them. To use it, open the tag you want to rename as a tiddler (it's the last option in the tag popup menu), edit it, rename it and click done. You will asked if you want to rename the tag. Click OK to rename the tag in the tiddlers that use it. Click Cancel to not rename the tag.\n\n!Example\nTry renaming [[Plugins]] or [[CSS]] on this site.\n\n!History\n* 1.0.1 (5-Mar-06) - Added feature to allow renaming of tags without side-effect of creating a tiddler\n* 1.0.0 (5-Mar-06) - First working version\n\n!Code\n***/\n//{{{\n\nversion.extensions.RenameTagsPlugin = {\n major: 1, minor: 0, revision: 0,\n date: new Date(2006,3,5),\n source: "http://simonbaird.com/mptw/#RenameTagsPlugin"\n};\n\nconfig.macros.RenameTagsPlugin = {};\nconfig.macros.RenameTagsPlugin.prompt = "Rename the tag '%0' to '%1' in %2 tidder%3?";\n\n// these are very useful, perhaps they should be in the core\nif (!store.addTag) {\n store.addTag = function(title,tag) {\n var t=this.getTiddler(title); if (!t || !t.tags) return;\n t.tags.push(tag);\n };\n};\n\nif (!store.removeTag) {\n store.removeTag = function(title,tag) {\n var t=this.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);\n };\n};\n\nstore.saveTiddler_orig_tagrename = store.saveTiddler;\nstore.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n if (title != newTitle && this.getTaggedTiddlers(title).length > 0) {\n // then we are renaming a tag\n var tagged = this.getTaggedTiddlers(title);\n if (confirm(config.macros.RenameTagsPlugin.prompt.format([title,newTitle,tagged.length,tagged.length>1?"s":""]))) {\n for (var i=0;i<tagged.length;i++) {\n store.removeTag(tagged[i].title,title);\n store.addTag(tagged[i].title,newTitle);\n // if tiddler is visible refresh it to show updated tag\n story.refreshTiddler(tagged[i].title,false,true);\n }\n }\n if (!this.tiddlerExists(title) && newBody == "") {\n // dont create unwanted tiddler\n return null;\n }\n }\n return this.saveTiddler_orig_tagrename(title,newTitle,newBody,modifier,modified,tags);\n}\n\n//}}}\n\n
Revisions to the current paper are documented below.
Two parallel efforts have to be undertaken in order to deliver and use the new JAG information environment: The delivery of [[IT]] capabilities to the [[Office of the JAG]], and JAG [[Business Transformation]].\n\nThe Roadmap is a unified description providing a global picture of the necessary [[Business Transformation]], the delivery of new [[IT]] capabilities to the [[Office of the JAG]] and the linkages between the two sets of activities.\n\nAs the [[CIMP]] moves forward into standard //Defence Planning & Management// (“DP&M”) phases, namely, definition and implementation; the Office of the JAG has to concurrently undertake several business transformation activities. These activities include, for example, the introduction of [[new record groups and record series|JAG Master File Plan]] in the [[Office of the JAG]] and new records management practices. Considering the willingness and desire of the JAG Webmaster (~DLaw/T) to concurrently evolve the JAG Web Site, the [[CIMP]] is offering advice and recommendations on how to best steer this evolution, taking into account the future information environment of the [[Office of the JAG]], by integrating this evolution in the following steps^^1^^:\n* [[Step 1]] - The Foundation: Implementing [[JAG IM Directives]]\n* [[Step 2]] - The New JAG Web Site: Leveraging [[Drupal]]\n** [[Step 2.1]] - Define Content Types, Define Roles and Permissions, Enable [[Taxonomy Management]], Configure [[Drupal]]\n** [[Step 2.2]] - Test Drive [[Drupal]] in ~DLaw/T with a basic features: [[Blogs]], [[Forums]], [[Comments]] \n** [[Step 2.3]] - Develop a [[Common Look & Feel]] Theme for ([[Drupal]])\n** [[Step 2.4]] - Develop a bilingual capability (interface and content) ([[Drupal]])\n** [[Step 2.5]] - Add [[Wiki-based|Wikis]] Content Management\n** [[Step 2.6]] - Deployment: [[Portal]] used throughout the [[Office of the JAG]]\n** [[Step 2.7]] - Develop and add [[Social Tagging]] and [[Search Collections]] capabilities to [[Portal]]\n* [[Step 3]] - Proof of Concept: [[DRMS]] and [[PCMS]] platforms operated within a [[PB Network]], in the CIMP Lab\n* [[Step 4]] - Pilot: [[DRMS]] and [[PCMS]] platforms operated within a [[PB Network]], in a JAG Directorate\n* [[Step 5]] - Deployment: [[DRMS]] and [[PCMS]] platforms operated within a [[PB Network]], throughout the [[Office of the JAG]]\n* [[Step 6]] - Proof of Concept: [[DRMS]] and [[PCMS]] platforms and [[Portal]] operated within a [[Classified Network]]\n* [[Step 7]] - Deployment: [[DRMS]] and [[PCMS]] platforms and [[Portal]] operated within a [[Classified Network]], for selected legal officers in the [[Office of the JAG]] (mainly ~DLaw/Ops, ~DLaw/I, ~DLaw/I&IO and ~DLaw/MJP&R)\n\n\n@@color(gray): ^^Note 1: The notion of “baby steps”, as coined by Ms. Julia Lelik, Chief Knowledge Office at the Office of the ~Auditor-General in one of her public lectures and more generally described by Mr. Denis Desautels in an interview by Paul Crookall [[reported|http://www.networkedgovernment.ca/ITAccountabilityDesautels]] in Canadian Government Executive, is reflected in the roadmap suggested here - particularly in the sub-steps depicted under [[Step 2]].^^@@\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^\n
People undertake IM activities. As a result, the information architecture standardizes IM roles. Some roles include the delivery of IM services, which are also standardized. Some services result in the delivery of information products, which are detailed.
The Standardized Information Management Framework ("SIMF"), version 3.3 or later, has been developed by the [[CIMP]] for the Office of the JAG. It follows course [[I310]] taught at the [[Canada School of the Public Service|http://www.myschool-monecole.gc.ca/main_e.html]] and is the key document outlining the following facets of Information Management:\n* [[Vision and Principles|Vision & Principles]]\n* [[JAG IM Directives]]\n* [[JAG Information Architecture|JIA]]\nFor a description of what SIMF’s are, please see the description in the article titled “[[In A Nutshell: Integrated IM|http://imbok.blogspot.com/2005/12/in-nutshell-integrated-information_14.html]]”.\n\nThe Framework is also available as a full color, bilingual (French and English), 11" x 17" [[SIMF Chart]].\n\n
This Chart is available upon request.\n\n[img[JAG SIMF v3.3|http://www.gov20.info/files/SIMF.JPG]]
Search collections would leverage corporate JAG systems ([[DRMS]] and [[PCMS]]), intranet resources, Internet resources, proprietary commercial sources - such as //~LexisNexis// and //Quicklaw// - and federated sources. See the complete explanation on search collections in [[The New Face of Enterprise Search|http://imbok.blogspot.com/2005/12/new-face-of-enterprise-seach.html]].\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
/***\n''SearchOptionsPlugin for TiddlyWiki version 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#SearchOptionsPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nThe TiddlyWiki search function normally looks in both tiddler titles and tiddler body content ('text'). However, narrowing the search so that it examines only titles or only text, or expanding the search to include text contained in tiddler tags can be very helpful, especially when searching on common words or phrases. In addition, it is often useful for the search results to show tiddlers with matching titles before tiddlers that contain matching text or tags.\n\n!!!!!Usage\n<<<\nThis plugin adds checkboxes (see below and in AdvancedOptions) to let you selectively configure the TiddlyWiki search function to just examine any combination of tiddler titles, text, or tags. It also provides an option to switch the search results order between 'titles mixed in' (default) and 'titles shown first', as well as an option display the search results as a list of links (in an auto-generated "SearchResults" tiddler), rather than actually displaying all matching tiddlers. You can also enable/disable the "incremental search" (key-by-key searching), so that a search is only initiated when you press the ENTER key or click on the "search:" prompt text.\n<<<\n!!!!!Configuration\n<<<\nIn additional to the checkboxes in AdvancedOptions, a self-contained control panel is included here for your convenience:\n<<option chkSearchTitles>> Search tiddler titles\n<<option chkSearchText>> Search tiddler text\n<<option chkSearchTags>> Search in tiddler tags\n<<option chkSearchTitlesFirst>> Show title matches first\n<<option chkSearchList>> Show list of matching tiddlers\n<<option chkSearchIncremental>> Incremental searching\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''SearchOptionsPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for SearchOptionsPlugin handling^^\n\nWhen installed, this plugin automatically adds checkboxes in the AdvancedOptions shadow tiddler so you can enable/disable the extended search behavior. However, if you have customized your AdvancedOptions, you will need to manually add {{{<<option chkSearchTitles>>}}}, {{{<<option chkSearchText>>}}} and {{{<<option chkSearchTitlesFirst>>}}} (with suitable prompt text) to your customized tiddler.\n<<<\n!!!!!Revision History\n<<<\n''2006.02.03 [2.2.1]''\nrewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes. note that core no longer permits "blank=all" searches, so neither does this plugin. To search for all, use "." with text patterns enabled.\n''2006.02.02 [2.2.0]''\nin search.handler(), KeyHandler() function clears 'left over' timeout when search input is < 3 chars. Prevents searching on shorter text when shortened by rapid backspaces (<500msec)\n''2006.02.01 [2.1.9]''\nin Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching\nalso, blank search text now presents "No search text. Continue anyway?" confirm() message box, so search on blank can still be processed if desired by user.\n''2006.02.01 [2.1.8]''\nin doSearch(), added alert/return if search text is blank\n''2006.01.20 [2.1.7]''\nfixed setting of config.macros.search.reportTitle so that Tweaks can override it.\n''2006.01.19 [2.1.6]''\nimproved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)\ndefine results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title\n''2006.01.18 [2.1.5]''\nCreated separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.\n''2006.01.17 [2.1.4]''\nUse regExp.search() instead of regExp.test() to scan for matches. Correctd the problem where only half the matching tiddlers (the odd-numbered ones) were being reported.\n''2006.01.15 [2.1.3]''\nAdded information (date/time, username, search options used) to SearchResults output\n''2006.01.10 [2.1.2]''\nuse displayTiddlers() to render matched tiddlers. This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.\n''2006.01.08 [2.1.1]''\ncorrected invalid variable reference, "txt.value" to "text" in story.search()\n''2006.01.08 [2.1.0]''\nre-write to match new store.search(), store.search.handler() and story.search() functions.\n''2005.12.30 [2.0.0]''\nUpgraded to TW2.0\nwhen rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.\n''2005.12.26 [1.4.0]''\nadded option to search for matching text in tiddler tags\n''2005.12.21 [1.3.7]''\nuse \s\s to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link. Also, added access key: "O", to trigger "open all" link.\nBased on a suggestion by UdoBorkowski.\n''2005.12.18 [1.3.6]''\ncall displayMessage() AFTER showing matching tiddlers so message is not cleared too soon\n''2005.12.17 [1.3.5]''\nif no matches found, just display message and delete any existing SearchResults tiddler.\n''2005.12.17 [1.3.4]''\nuse """{{{""" and """}}}""" to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered \nBased on a suggestion by UdoBorkowski.\n''2005.12.14 [1.3.3]''\ntag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches\nBased on a suggestion by UdoBorkowski.\n''2005.12.14 [1.3.2]''\nadded "open all matching tiddlers..." link to search results output.\nBased on a suggestion by UdoBorkowski.\n''2005.12.10 [1.3.1]''\nadded "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.\n''2005.12.01 [1.3.0]''\nadded chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).\nadded handling for Enter key so it can be used to start a search.\nBased on a suggestion by LyallPearce\n''2005.11.25 [1.2.1]''\nrenamed from SearchTitleOrTextPlugin to SearchOptionsPlugin\n''2005.11.25 [1.2.0]''\nadded chkSearchList option\nBased on a suggestion by RodneyGomes\n''2005.10.19 [1.1.0]''\nadded chkSearchTitlesFirst option.\nBased on a suggestion by ChristianHauck\n''2005.10.18 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\nBased on a suggestion by LyallPearce.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.SearchTitleOrText = {major: 2, minor: 2, revision: 1, date: new Date(2006,2,3)};\n//}}}\n\n//{{{\nif (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=true;\nif (config.options.chkSearchText==undefined) config.options.chkSearchText=true;\nif (config.options.chkSearchTags==undefined) config.options.chkSearchTags=true;\nif (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=false;\nif (config.options.chkSearchList==undefined) config.options.chkSearchList=false;\nif (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=true;\n\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchTitles>> Search in tiddler titles";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchText>> Search in tiddler text";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchTags>> Search in tiddler tags";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchTitlesFirst>> Search results show title matches first";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchList>> Search results show list of matching tiddlers";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchIncremental>> Incremental searching";\n//}}}\n\n//{{{\nif (config.macros.search.reportTitle==undefined)\n config.macros.search.reportTitle="SearchResults";\n//}}}\n\n//{{{\nconfig.macros.search.handler = function(place,macroName,params)\n{\n var lastSearchText = "";\n var searchTimeout = null;\n var doSearch = function(txt)\n {\n if (txt.value.length>0)\n {\n story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);\n lastSearchText = txt.value;\n }\n };\n var clickHandler = function(e)\n {\n doSearch(this.nextSibling);\n return false;\n };\n var keyHandler = function(e)\n {\n if (!e) var e = window.event;\n switch(e.keyCode)\n {\n case 13: // ELS: handle enter key\n doSearch(this);\n break;\n case 27:\n this.value = "";\n clearMessage();\n break;\n }\n if (config.options.chkSearchIncremental)\n {\n if(this.value.length > 2)\n {\n if(this.value != lastSearchText)\n {\n if(searchTimeout) clearTimeout(searchTimeout);\n var txt = this;\n searchTimeout = setTimeout(function() {doSearch(txt);},500);\n }\n }\n else\n if(searchTimeout) clearTimeout(searchTimeout);\n }\n };\n var focusHandler = function(e)\n {\n this.select();\n };\n var btn = createTiddlyButton(place,this.label,this.prompt,clickHandler);\n var txt = createTiddlyElement(place,"input",null,null,null);\n if(params[0])\n txt.value = params[0];\n txt.onkeyup = keyHandler;\n txt.onfocus = focusHandler;\n txt.setAttribute("size",this.sizeTextbox);\n txt.setAttribute("accessKey",this.accessKey);\n txt.setAttribute("autocomplete","off");\n if(config.browser.isSafari)\n {\n txt.setAttribute("type","search");\n txt.setAttribute("results","5");\n }\n else\n txt.setAttribute("type","text");\n}\n//}}}\n\n//{{{\nStory.prototype.search = function(text,useCaseSensitive,useRegExp)\n{\n highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");\n var matches = store.search(highlightHack,"title","excludeSearch");\n var q = useRegExp ? "/" : "'";\n clearMessage();\n if (!matches.length) {\n if (config.options.chkSearchList) discardSearchResults();\n displayMessage(config.macros.search.failureMsg.format([q+text+q]));\n } else {\n if (config.options.chkSearchList) \n reportSearchResults(text,matches);\n else {\n var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);\n this.closeAllTiddlers(); story.displayTiddlers(null,titles);\n displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));\n }\n }\n highlightHack = null;\n}\n//}}}\n\n//{{{\nTiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)\n{\n var candidates = this.reverseLookup("tags",excludeTag,false,sortField);\n\n // scan for matching titles\n var title_results = [];\n if (config.options.chkSearchTitles)\n for(var t=0; t<candidates.length; t++)\n if(candidates[t].title.search(searchRegExp)!=-1)\n title_results.push(candidates[t]);\n\n // scan for matching text\n var text_results = [];\n if (config.options.chkSearchText)\n for(var t=0; t<candidates.length; t++)\n if(candidates[t].text.search(searchRegExp)!=-1)\n text_results.push(candidates[t]);\n\n // scan for matching tags\n var tag_results = [];\n if (config.options.chkSearchTags)\n for(var t=0; t<candidates.length; t++)\n if(candidates[t].tags.join(" ").search(searchRegExp)!=-1)\n tag_results.push(candidates[t]);\n\n // merge the results, eliminating redundant matches\n var results = [];\n for(var t=0; t<title_results.length; t++) results.pushUnique(title_results[t]);\n for(var t=0; t<text_results.length; t++) results.pushUnique(text_results[t]);\n for(var t=0; t<tag_results.length; t++) results.pushUnique(tag_results[t]);\n\n // if not 'titles first', re-sort results to so titles, text and tag matches are mixed together\n if(!sortField) sortField = "title";\n var bySortField=function (a,b) {if(a[sortField] == b[sortField]) return(0); else return (a[sortField] < b[sortField]) ? -1 : +1; }\n if (!config.options.chkSearchTitlesFirst) results.sort(bySortField);\n return results;\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n//{{{\nif (!window.reportSearchResults) window.reportSearchResults=function(text,matches)\n{\n var title=config.macros.search.reportTitle\n var q = config.options.chkRegExpSearch ? "/" : "'";\n var body="\sn";\n\n // summary: nn tiddlers found matching '...', options used\n body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\sn";\n body+="^^//searched in:// ";\n body+=(config.options.chkSearchTitles?"''titles'' ":"");\n body+=(config.options.chkSearchText?"''text'' ":"");\n body+=(config.options.chkSearchTags?"''tags'' ":"");\n if (config.options.chkCaseSensitiveSearch||config.options.chkRegExpSearch) {\n body+=" //with options:// ";\n body+=(config.options.chkCaseSensitiveSearch?"''case sensitive'' ":"");\n body+=(config.options.chkRegExpSearch?"''text patterns'' ":"");\n }\n body+="^^";\n\n // numbered list of links to matching tiddlers\n body+="\sn<<<";\n for(var t=0;t<matches.length;t++) body+="\sn# [["+matches[t].title+"]]";\n body+="\sn<<<\sn";\n\n // open all matches button\n body+="<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n body+="onclick=\s"story.displayTiddlers(null,["\n for(var t=0;t<matches.length;t++)\n body+="'"+matches[t].title.replace(/\s'/mg,"\s\s'")+"'"+((t<matches.length-1)?", ":"");\n body+="],1);\s" ";\n body+="accesskey=\s"O\s" ";\n body+="value=\s"open all matching tiddlers\s"></html> ";\n\n // discard search results button\n body+="<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n body+="onclick=\s"story.closeTiddler('"+title+"'); store.deleteTiddler('"+title+"');\s" ";\n body+="value=\s"discard "+title+"\s"></html>";\n\n // search again\n body+="\sn\sn----\sn";\n body+="<<search \s""+text+"\s">> ";\n body+="<<option chkSearchTitles>>titles ";\n body+="<<option chkSearchText>>text ";\n body+="<<option chkSearchTags>>tags";\n body+="<<option chkCaseSensitiveSearch>>case-sensitive ";\n body+="<<option chkRegExpSearch>>text patterns";\n\n // create/update the tiddler\n var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();\n tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch");\n store.addTiddler(tiddler); story.closeTiddler(title);\n\n // use alternate "search again" label in <<search>> macro\n var oldprompt=config.macros.search.label;\n config.macros.search.label="search again";\n\n // render tiddler\n story.displayTiddler(null,title,1); // force refresh\n\n // restore standard search label\n config.macros.search.label=oldprompt;\n\n}\n\nif (!window.discardSearchResults) window.discardSearchResults=function()\n{\n // remove the tiddler\n story.closeTiddler(config.macros.search.reportTitle);\n store.deleteTiddler(config.macros.search.reportTitle);\n}\n//}}}\n\n\n
\n''1 tiddlers found matching '{{{foler}}}'''\n^^//searched in:// ''titles'' ''text'' ''tags'' ^^\n<<<\n# [[Local Implementation Plans]]\n<<<\n<html><input type="button" href="javascript:;" onclick="story.displayTiddlers(null,['Local Implementation Plans'],1);" accesskey="O" value="open all matching tiddlers"></html> <html><input type="button" href="javascript:;" onclick="story.closeTiddler('SearchResults'); store.deleteTiddler('SearchResults');" value="discard SearchResults"></html>\n\n----\n<<search "foler">> <<option chkSearchTitles>>titles <<option chkSearchText>>text <<option chkSearchTags>>tags<<option chkCaseSensitiveSearch>>case-sensitive <<option chkRegExpSearch>>text patterns
<<search>><<newTiddler>><<closeAll>><<permaview>><html>\n<!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/ca/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.png"/></a><br/><!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">\n <Work rdf:about="">\n <license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.5/ca/" />\n <dc:title>The Future | JAG Legal Information Environment</dc:title>\n <dc:date>2006</dc:date>\n <dc:description>Discussion paper prepared by the Comprehensive Information Management Project, National Defence project 758, for the Office of the JAG.</dc:description>\n <dc:creator><Agent><dc:title>Major Patrick Cormier</dc:title></Agent></dc:creator>\n <dc:rights><Agent><dc:title>Queen in Right of Canada</dc:title></Agent></dc:rights>\n <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />\n </Work>\n <License rdf:about="http://creativecommons.org/licenses/by-nc-nd/2.5/ca/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/></License></rdf:RDF> -->\n<a href="http://www.feedblitz.com/f/?Sub=48386" target="_blank">\n<img title="Subscribe and get your updates by email" border="0" src="http://pages.videotron.com/fidelis/files/cimp-updates.gif"></a>\n<a href="http://feeds.feedburner.com/jagcimp" target="_blank" title="Subscribe to the JAG CIMP RSS feed" rel="alternate" type="application/rss+xml"><img src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="border:0"/></a>\n</HTML>
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><html>\n<!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/ca/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.png"/></a><br/><!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">\n <Work rdf:about="">\n <license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.5/ca/" />\n <dc:title>The Future | JAG Legal Information Environment</dc:title>\n <dc:date>2006</dc:date>\n <dc:description>Discussion paper prepared by the Comprehensive Information Management Project, National Defence project 758, for the Office of the JAG.</dc:description>\n <dc:creator><Agent><dc:title>Major Patrick Cormier</dc:title></Agent></dc:creator>\n <dc:rights><Agent><dc:title>Queen in Right of Canada</dc:title></Agent></dc:rights>\n <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />\n </Work>\n <License rdf:about="http://creativecommons.org/licenses/by-nc-nd/2.5/ca/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/></License></rdf:RDF> -->\n</html><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
/***\nThis CSS by Dave Birss.\n***/\n/*{{{*/\n\n.tabSelected {\n background: #fff;\n}\n\n.tabUnselected {\n background: #eee;\n}\n\n#sidebar {\n color: #000;\n}\n\n#sidebarOptions {\n background: #fff;\n}\n\n#sidebarOptions .button {\n color: #999;\n}\n\n#sidebarOptions .button:hover {\n color: #000;\n background: #fff;\n border-color:white;\n}\n\n#sidebarOptions .button:active {\n color: #000;\n background: #fff;\n}\n\n#sidebarOptions .sliderPanel {\n background: transparent;\n}\n\n#sidebarOptions .sliderPanel A {\n color: #999;\n}\n\n#sidebarOptions .sliderPanel A:hover {\n color: #000;\n background: #fff;\n}\n\n#sidebarOptions .sliderPanel A:active {\n color: #000;\n background: #fff;\n}\n\n.sidebarSubHeading {\n color: #000;\n}\n\n#sidebarTabs {`\n background: #fff\n}\n\n#sidebarTabs .tabSelected {\n color: #000;\n background: #fff;\n border-top: solid 1px #ccc;\n border-left: solid 1px #ccc;\n border-right: solid 1px #ccc;\n border-bottom: none;\n}\n\n#sidebarTabs .tabUnselected {\n color: #999;\n background: #eee;\n border-top: solid 1px #ccc;\n border-left: solid 1px #ccc;\n border-right: solid 1px #ccc;\n border-bottom: none;\n}\n\n#sidebarTabs .tabContents {\n background: #fff;\n}\n\n\n#sidebarTabs .txtMoreTab .tabSelected {\n background: #fff;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected {\n background: #eee;\n}\n\n#sidebarTabs .txtMoreTab .tabContents {\n background: #fff;\n}\n\n#sidebarTabs .tabContents .tiddlyLink {\n color: #999;\n}\n\n#sidebarTabs .tabContents .tiddlyLink:hover {\n background: #fff;\n color: #000;\n}\n\n#sidebarTabs .tabContents {\n color: #000;\n}\n\n#sidebarTabs .button {\n color: #666;\n}\n\n#sidebarTabs .tabContents .button:hover {\n color: #000;\n background: #fff;\n}\n\n/*}}}*/
/***\n| Name:|SiteMapMacro|\n| Author:|Simon Baird|\n| Location:|http://simonbaird.com/mptw/#SiteMapMacro|\n| Version:|1.0.3, 15-Mar-06|\n\n!!Examples\nSee SiteMap and SliderSiteMap for example usage.\n\n!!Parameters\n* Name of tiddler to start at\n* Max depth (a number) \n* Format (eg, nested, see formats below)\n* Don't show root flag (anything other than null turns it on)\n* Tags - a string containing a bracketed list of tags that we are interested in\n\n!!History\n* 1.0.3 (15-Mar-06)\n** added tag filtering\n* 1.0.2 (15-Mar-06)\n** Added json format and dontshowroot option\n* 1.0.1 (9-Mar-06)\n** Added selectable formats and fixed nested slider format\n* 1.0.0 (8-Mar-06)\n** first release\n\n***/\n//{{{\n\nversion.extensions.SiteMapMacro = {\n major: 1,\n minor: 0,\n revision: 3,\n date: new Date(2006,3,15),\n source: "http://simonbaird.com/mptw/#SiteMapMacro"\n};\n\nconfig.macros.siteMap = {\n\n formats: {\n bullets: {\n formatString: "%0[[%1]]\sn%2",\n indentString: "*"\n },\n\n // put this in your StyleSheet to make it look good.\n // .sliderPanel { margin-left: 2em; }\n\n sliders: {\n formatString: "[[%1]]+++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n openSliders: {\n formatString: "[[%1]]++++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n popups: {\n formatString: "[[%1]]+++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n // these don't work too well\n openPopups: {\n formatString: "[[%1]]++++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n \n // this is a little nuts but it works\n json: {\n formatString: '\sn%0{"%1":[%2\sn%0]}',\n formatStringLeaf: '\sn%0"%1"',\n indentString: " ",\n separatorString: ","\n }\n\n\n },\n\n defaultFormat: "bullets",\n\n treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {\n\n var tiddler = store.getTiddler(title);\n var tagging = store.getTaggedTiddlers(title);\n\n if (dontshowroot)\n depth = 0;\n\n var indent = "";\n if (this.formats[format].indentString)\n for (var j=0;j<depth;j++)\n indent += this.formats[format].indentString;\n\n var childOutput = "";\n if (!maxdepth || depth < parseInt(maxdepth)) \n for (var i=0;i<tagging.length;i++)\n if (tagging[i].title != title) {\n if (this.formats[format].separatorString && i != 0)\n childOutput += this.formats[format].separatorString;\n childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);\n }\n\n if (childOutput == "" && (\n (tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||\n (excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))\n )\n ) {\n // so prune it cos it doesn't have the right tags and neither do any of it's children\n return "";\n }\n\n if (dontshowroot)\n return childOutput;\n\n if (this.formats[format].formatStringLeaf && childOutput == "") {\n // required for nestedSliders\n return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);\n }\n\n return this.formats[format].formatString.format([indent,title,childOutput]);\n },\n\n handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n wikify(this.treeTraverse(\n params[0] && params[0] != '.' ? params[0] : tiddler.title, 1, \n params[1] && params[1] != '.' ? params[1] : null, // maxdepth\n params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format\n params[3] && params[3] != '.' ? params[3] : null, // dontshowroot\n params[4] && params[4] != '.' ? params[4] : null, // tags\n params[5] && params[5] != '.' ? params[5] : null // excludetags\n ),place);\n }\n\n}\n\n//}}}\n
//a discussion paper by the [[CIMP]]//
The Future | JAG Legal Information Environment
http://www.gov20.info/files/
//Syndicated social Tagging// is a concept that turns on three notions:\n* //Tagging// implies more than //bookmarking//. When a user bookmarks an intranet or internet page, resulting in a Firefox bookmark or Explorer favorite, only a link to that page is saved in that user profile. Tagging implies that the user specifies "tags" (or "keywords") when he bookmarks a resource. Why tag? After bookmarking several hundred resources, it may be difficult to find links. Tags allow users to find saved hyperlinks using... tags. For example, see the [[online tags by Maj PatrickCormier|http://del.icio.us/fidelis1970/IMBOK]]. Under each link, you will find a short description (typically a copy and paste from the page) and several tags. By clicking on one of the tags listed at the right of the [[page previously quoted|http://del.icio.us/fidelis1970/IMBOK]], you immediately have access to all pages tagged with that keyword. Tags can even be combined, when retrieving results, for an even more refined set of results.\n* //Social// implies more than individual tagging. In the [[example|http://del.icio.us/fidelis1970/IMBOK]] just given, you may have noticed that under several links, there is "saved by ... other people". Blicking on such links allows you to see you has tagged the same resources and, in turn, you can even navigate in their tagged resources and make interesting discoveries.\n* //Syndicated// means that user, tag and user/tag pages automatically generate [[RSS]] feeds, enabling other users to subscribe. In other words, if a legal officer wanted to be alerted whenever other legal officers are tagging a resource as "MAL" or "MJ", by subscribing to those tags, he would immediately be alerted and could also bookmark these resources.\nWhy would social tagging matter in government, in corporate settings, or, in particular, in the Office of the JAG? Is it even possible to replicate the concept of social tagging inside the Office of the JAG?\n\nSyndicated social tagging will tremendously benefit the Office of the JAG because it represents a proven method for adding value to the enterprise capacity to find information, //each time a user bookmarks and tags a resource//. IBM has already developed an application for enterprise bookmarking, called //dogear//, and there are also [[FOSS]] alternatives. The prospects of [[social tagging for the enterprise|http://imbok.blogspot.com/2006/02/social-tagging-for-enterprise.html]] are promising and the [[CIMP]] sees this capability as necessary in order to [[manage information efficiently|ManageInfoEfficiently]].\n\nSee also [[Taxonomy Management]].\n\n__Note__: a "tag roll" example can be found in the sidebar menu, under the heading "Categories", at http://imbok.blogspot.com/\n\n__References__:\n* David Millen, Jonathan Feinberg, and Bernard Kerr, “[[Social Bookmarking in the Enterprise|http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=344&page=1]]”\n* IBM Watson Research Center, Jonathan Feinberg, Bernard Kerr, “[[A Collaborative User Experience Project|http://domino.research.ibm.com/cambridge/research.nsf/242252765710c19485256979004d289c/1c181ee5fbcf59fb852570fc0052ad75?OpenDocument]]”\n* Ben Charny, “[[Google May Be Flirting with Social Bookmarks|http://www.pcmag.com/article2/0,1759,1931635,00.asp]]”\n* Marieke Guy and Emma Tonkin, “[[Folksonomies: Tidying Up Tags?|http://www.dlib.org/dlib/january06/guy/01guy.html]]”, ~D-Lib Magazine, Jan 2006 (Vol 12:No 1)\n* Brendon Connelly, “[[The Several Habits of Wildly Successful del.icio.us Users|http://slackermanager.com/2005/12/the_several_hab.html]]”\n* Marshall Kirkpatrick, “[[13 Reasons To Use Tags|http://marshallk.com/13-reasons-to-use-tags]]”\n\n^^@@color(gray): (thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
The information architecture recognizes that people need standards, education and training if they are to efficiently conduct IM activities, and they are therefore recognized as a core architectural component.
The first step on the journey to better information management is to implement [[JAG IM Directives]] in accordance with [[Local Implementation Plans]], to be presented, explained and discussed at the [[RVG Retreat - June 06]].\n\nThe timeline is as follows:\n* ''May - June 06'': Finalize the draft [[JAG IM Directives]] and [[Local Implementation Plan|Local Implementation Plans]] template\n* ''21-23 June 06'': The [[RVG Retreat - June 06]] takes place in Ottawa, with one senior major legal officer representing each directorate and regional office and several other participants. Open the latter link for the latest agenda\n* ''23 June to 15 Sept 06'': all regional offices, directorates and other JAG offices complete their [[Local Implementation Plans]] and are due back to the [[CIMP]] Project Office on September 15^^th^^, 2006\n* ''15 Sept to end Oct 06'': any unforeseen issues arising from [[Local Implementation Plans]] are addressed; final approval by [[JAG & Deputies]] is obtained prior to the 2006 JAG CLE Workshop to be held in Ottawa at the end of October 2006\n* ''2006 JAG CLE Workshop'': formal launch of all [[JAG IM Directives]] and [[Local Implementation Plans]]. The necessary information, briefing, guidance and resources will be given to all participants of the workshop\n* ''Nov and Dec 06'': [[Local Implementation Plans]] are put into effect throughout the [[Office of the JAG]], files are migrated to the new shared directories as per the [[File Folder Convention]] and renamed in accordance with the [[File Naming Convention]]; [[Case Books]] are managed using the new [[Case Templates]], etc.\n* ''January 1^^st^^, 2007'': The [[Office of the JAG]] is efficiently managing its information in a paper-based environment, leveraging to the maximum extent the usefulness of shared directories, __and is ready for the delivery of the new [[IT]] platforms by the [[CIMP]]__: [[Document and Records Management|DRMS]], [[Practice and Case Management|PCMS]] and a [[Portal]], operating in [[Protected|PB Network]] and [[Classified|Classified Network]] networks.
As a result of the willingness and desire of the JAG Webmaster (~DLaw/T) to have the JAG Web Site offer more value to all its users, the [[CIMP]] has been consulted in order to ensure that changes to the JAG web site line up with the future information environment delivered by the project office.\n\nAfter researching [[Trends & Opportunities]], in particular, [[Web 2.0]] trends and how [[it applies to the legal profession|Web 2.0 and the Legal Profession]], the [[CIMP]] has chosen //on a tentative basis// [[Drupal]], a [[Free and Open Source Software|FOSS]], to fulfill the Web Content Management requirement. \n\n[[Drupal]] will be investigated and brought onboard progressively, in accordance with the steps identified below.
^^@@color(gray): (the parent step was [[Leveraging Drupal|Step 2]]@@^^\n\n[[Drupal]] is a very flexible web content management environment in which the administrator, via a web interface (no programming needed), can define roles and assign rights and permissions to these roles; can implement site wide taxonomy and can be configured for a variety of different sceanrios.\n\nIn Step 2.1, the following tasks will be completed:\n* Define what type of content will be managed on the JAG Web Site (forum posts, blog entries, static pages, etc.)\n* Define controlled vocabularies (in the form of hierarchical categories) and associate the right vocabularies with the right content types\n* Define user roles, rights and permissions; including what roles can publish what type of content, etc.;\n* Investigate the use of [[free tagging|Social Tagging]] in conjunction with structured taxonomy ([[Drupal]] allows both if properly configured)\n\n@@color(gray): ^^(next step: [[Test Driving Drupal in DLaw/T|Step 2.2]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
^^@@color(gray): (the previous step was [[Basic Drupal Configuration|Step 2.1]])@@^^\n\nIn Step 2.2, a basic [[Drupal]] web site will be tested with ~DLaw/T, offering the following features, leveraging a pre-defined taxonomy:\n* Static Pages\n* [[Blogs]]\n* [[Forums]]\n* [[Comments]]\nSome of the opportunities to be investigated during this step are:\n* ''Using Blogs - Deal with the “Mass Email” Problem''. Evaluate the [[Email Overload]] problem with the objective of identifying the sum of all topics corresponding to all mass emails. For each such topic, create a [[blog|Blogs]]. Redirect future mass emails to the appropriate blog. Decide which blogs are mandatory and which blogs can be individually subscribed to. As other mass emails still come through Outlook, evaluate the required process change in order to redirect the email traffic to the appropriate blogs. Note: mass emails are, by definition, transitory records - they are copies. As a result, they need not be handled as corporate records. Only the originator needs to handle the communication as a record, provided the communication fulfils the usual criteria of corporate records\n* ''Using Blogs - Optimize Court Martial Reporting''. Create one blog: “Court Martial”. Post court decisions, updated rules of the court and other pertinent material on this blog.\n* ''Using Blogs - Optimize JAG Library Periodical Notification''. Instead of sending JAG periodicals around the Office of the JAG for circulation, for each periodical, create a “JAG Library” blog and post on that blog the Table of Content of each issue as they arrive. All subscribers will immediately be notified that a new issue has arrived. If they are interested in that issue, they will contact the Library to loan it\n__Note__: the previous three examples illustrate what can easily be done, once a blog management system is in place. The same blog management system can be used to tackle and resolve a variety of Information Management challenges.\n\n^^@@color(gray): (the next step: [[Common Look & Feel Drupal Theme|Step 2.3]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
^^@@color(gray): (the previous step was [[Test Driving Drupal in DLaw/T|Step 2.2]])@@^^\n\n[[Drupal]] is a web content management system in which there is a complete separation of content and look. The look and feel of the site is costomized using "themes". In this step, we will develop a [[Common Look & Feel]] theme for [[Drupal]].\n\nTo the extent the site is password-protected and available only to one directorate, or even to the [[Office of the JAG]], [[Common Look & Feel]] is not necessary. However, when it will be time to replace the current JAG Web Site with Drupal, it must be bilingual and compliant with [[Common Look & Feel]] requirements.\n\n@@color(gray): ^^(next step: [[Bilingual Capability|Step 2.4]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
^^@@color(gray): (the previous step was [[Common Look & Feel Drupal Theme|Step 2.3]]@@)^^\n\nThe interface (menu commands etc.) of [[Drupal]] has already been [[translated|http://drupal.org/node/290]] in a number of languages. The next step is to configure Drupal in a way that it can manage bilingual content. In this step, options will be develped on how to best achieve this bilingual capability.\n\n@@color(gray): ^^(next step: [[Wiki-based Content Management|Step 2.5]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
^^@@color(gray): (the previous step was [[Drupal in both official languages|Step 2.4]])@@^^\n\nA [[wiki-type content management system|Wikis]] will be used to manage all [[Material of precedential value]], according to the [[JAG Master Index]]. This means using the [[Liquid Wiki Module|http://drupal.org/node/53517]] of [[Drupal]]. Once this capability is added to the JAG Web Site, the corresponding content will be migrated online - from the [[shared directories|File Folder Convention]] - by the CIMP Legal Analysts.\n\n@@color(gray): ^^(next step: [[Deployment of Portal in the Office of the JAG|Step 2.6]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
^^@@color(gray): (the previous step was [[Wiki-based Content Management|Step 2.5]])@@^^\n\nWhen [[Drupal]] will be [[Common Look & Feel]] compliant, bilingual for content and interface and capable of hosting the [[JAG Master Index]] in a [[Wiki-based system|Wikis]]; and tested extensively in ~DLaw/T; it will be ready for use by all JAG users.\n\n@@color(gray): ^^(next step: [[Social Tagging and Search Collections|Step 2.7]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
^^@@color(gray): (the previous step was [[Deployment of Portal throughout the Office of the JAG|Step 2.6]])@@^^\n\nOne of the last features / capabilities to add to [[Drupal]] are [[Search Collections]] and [[Social Tagging]]:\n* ''Syndicated Search collections''. A search collection is an index of resources to be queried by the search engine . Each search can specify one or many search collections. Available search collections depend on the context and user category. Search collections contain lists of resources to be queried, from any or all of the following sources: [[DRMS]], [[PCMS]], the [[JAG Master Index]] of all military law topics, Library holdings, etc.; Intranet pages; Internet pages; commercial online information providers (//e.g.// ~LexisNexis, Encyclopædia Britannica); and federated searches leveraging other search engines. By syndicating search collections, members have the option to be notified whenever these collections are updated\n* ''Syndicated Enterprise Bookmarking & Tagging Management''. Add a Social Bookmarking & Tagging system supporting automatic syndication . “Tagging”, or [[social tagging|Social Tagging]], occurs when users select content on a web page (or manually types in a description) and bookmark the page with descriptive tags. In an organizational context, it is possible to issue guidelines on the choice of tags and whether some tags should be reserved, however, the whole idea behind social tagging is to put users in charge. Users decide on their own tagging methodology and stick with it. It does not matter if different tagging methodologies are used because, in the end, tagging differently a page does not change the fact that the same page has been tagged. Over time, instead of building a personal bookmarks list, users build a comprehensive list of resources annotated with tags, and all users can navigate all resources by the use of these tags. In addition, as more people tag the same resources (e.g. the US Military Court of Appeals, etc.), the resource gets more prominence among all users. Users, tags or any combination thereof can be syndicated and subscribed to. In other words, any legal officer that wants to be notified every time a new resource is tagged “MJ” (Military Justice) would simply subscribe to the [[RSS]] feed of that tag, produced automatically by the Tagging Management system. About one hour of user training is sufficient in order to be able to exploit this capability.\nThese capabilities will be investigated by the CIMP at a later date.\n\n^^@@color(gray): (next parent step: [[CIMP Proof of Concept - DRMS and PCMS|Step 3]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^\n
^^@@color(gray): (the previous step was [[Leveraging Drupal|Step 2]])@@^^\n\nAt the same time [[Drupal]] is investigated and used in the [[Office of the JAG]], the [[CIMP]] will progress in its definition, acquisition and testing of [[Document & Records Management|DRMS]] and [[Practice and Case Management|PCMS]], from within a [[Protected B Network|PB Network]]. The Proff of concept will be completed in partnership with the Land Software Engineering Centre (LSEC), an ADM(Mat) organization.\n\n@@color(gray): ^^(next step: [[CIMP Pilot|Step 4]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
^^@@color(gray): (the previous step was [[Proof of Concept|Step 3]])@@^^\n\nUpon successful completion of the proof of concept, in step 4, we will test drive [[Document & Records Management|DRMS]] and [[Practice and Case Management|PCMS]], from within a [[Protected B Network|PB Network]], in selected JAG directorates and regional offices.\n\n^^@@color(gray): (next step: [[JAG Deployment|Step 5]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
^^@@color(gray): (the previous step was [[CIMP Pilot|Step 4]])@@^^\n\nIn step 5, it will be time to give all JAG users access to the new [[IT]] capabilities delivered by the [[Office of the JAG]], in the Protected Domain ([[PB Network]]).\n\n^^@@color(gray): (next step: [[CIMP Proof of Concept - Classified Network|Step 6]] of other JAG Resources | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^
^^@@color(gray): (the previous step was [[CIMP Deployment - Protected Domain|Step 5]]@@^^\n\nAfter the new [[IT]] capabilities delivered by the [[CIMP]] to the [[Office of the JAG]] are successfully used by users in the Protected Domain, we will reproduce the same capabilities, from an end user perspective, in the Classified Domain, starting with a Proof of Concept in the CIMP Lab.\n\n@@color(gray): ^^(next step: [[CIMP Deployment - Classified Domain|Step 7]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^\n
^^@@color(gray): (the previous step was [[CIMP Proof of Concept - Classified Domain|Step 6]])@@^^\n\nThe final step of the proposed roadmap involves the deployment of the following [[IT]] capabilities:\n* [[Document and Records Management|DRMS]]\n* [[Practice and Case Management|PCMS]]\n* [[Portal]]\n...in the Classified Domain, for the following JAG users:\n* Deployed legal officers and legal officers in ~DLaw/Ops, ~DLaw/I and ~DLaw/I&IO; and\n* Legal officers in ~DLaw/MJP&R currently assigned a TEMPEST workstation.\n\n^^@@color(gray): (this is the last step of the proposed [[Roadmap]] | thoughts? comment? suggestions? you can leave some [[Feedback]])@@^^\n
/***\nCosmetic fixes that probably should be included in a future TW...\n***/\n/*{{{*/\n.viewer .listTitle { list-style-type:none; margin-left:-2em; }\n.editorFooter .button { padding-top: 0px; padding-bottom:0px; }\n/*}}}*/\n/***\nImportant stuff. See TagglyTaggingStyles and HorizontalMainMenuStyles\n***/\n/*{{{*/\n[[TagglyTaggingStyles]]\n[[HorizontalMainMenuStyles]]\n/*}}}*/\n/***\nClint's fix for weird IE behaviours\n***/\n/*{{{*/\nbody {position:static;}\n.tagClear{margin-top:1em;clear:both;}\n/*}}}*/\n/***\nJust colours, fonts, tweaks etc. See SideBarWhiteAndGrey\n***/\n/*{{{*/\nbody {background:#eee; /* font-size:103%; */}\na{ color: #069; }\na:hover{ background: #069; color: #fff; }\n.popup { background: #178; border: 1px solid #069; }\n.headerForeground a { color: #6fc;}\n.headerShadow { left: 2px; top: 2px; }\n.title { padding:0px; margin:0px; }\n.siteSubtitle { padding:0px; margin:0px; padding-left:1.5em; }\n.subtitle { font-size:90%; color:#ccc; padding-left:0.25em; }\nh1,h2,h3,h4,h5 { color: #000; background: transparent; }\n.title {color:black; font-size:2em;}\n.shadow .title {color:#999; }\n.viewer pre { background-color:#f8f8ff; border-color:#ddf; }\n.viewer { padding-top:0px; }\n.editor textarea { font-family:monospace; }\n#sidebarOptions { border:1px #ccc solid; }\n.tiddler {\n border-bottom:1px solid #ccc; border-right:1px solid #ccc; padding-bottom:1em; margin-bottom:1em; \n background:#fff; padding-right:1.5em; }\n#messageArea { background-color:#bde; border-color:#8ab; border-width:4px; border-style:dotted; font-size:90%; }\n#messageArea .button { text-decoration:none; font-weight:bold; background:transparent; border:0px; }\n#messageArea .button:hover {background: #acd; }\n[[SideBarWhiteAndGrey]]\n\n#adsense {\n margin: 1em 15.7em 0em 1em; border:1px solid #ddd;\n background:#f8f8f8; text-align:center;margin-bottom:1em;overflow:hidden;padding:0.5em;} \n/*}}}*/\n/*{{{*/\n/* for testing clint's new formatter. eg {{red{asdfaf}}} */\n.red { color:white; background:red; display:block; padding:1em; } \n\n/* FF doesn't need this. but IE seems to want to make first one white */\n.txtMainTab .tabset { background:#eee; }\n.txtMoreTab .tabset { background:transparent; }\n\n/*}}}*/\n
/***\n|Name|TagglyListPlugin|\n|Created by|SimonBaird|\n|Location|http://simonbaird.com/mptw/#TagglyListPlugin|\n|Version|1.1.1 6-Mar-06|\n|Requires|See TagglyTagging|\n\n!History\n* 1.1.1 (6-Mar-2006) fixed bug with refreshAllVisible closing tiddlers being edited. Thanks Luke Blanshard.\n\n***/\n\n/***\n!Setup and config\n***/\n//{{{\n\nversion.extensions.TagglyListPlugin = {\n major: 1, minor: 1, revision: 1,\n date: new Date(2006,3,6),\n source: "http://simonbaird.com/mptw/#TagglyListPlugin"\n};\n\nconfig.macros.tagglyList = {};\nconfig.macros.tagglyListByTag = {};\nconfig.macros.tagglyListControl = {};\nconfig.macros.tagglyListWithSort = {};\nconfig.macros.hideSomeTags = {};\n\n// change this to your preference\nconfig.macros.tagglyListWithSort.maxCols = 6;\n\nconfig.macros.tagglyList.label = "Tagged as %0:";\n\n// the default sort options. set these to your preference\nconfig.macros.tagglyListWithSort.defaults = {\n sortBy:"title", // title|created|modified\n sortOrder: "asc", // asc|desc\n hideState: "show", // show|hide\n groupState: "nogroup", // nogroup|group\n numCols: 1\n};\n\n// these tags will be ignored by the grouped view\nconfig.macros.tagglyListByTag.excludeTheseTags = [\n "systemConfig",\n "TiddlerTemplates"\n];\n\nconfig.macros.tagglyListControl.tags = {\n title:"sortByTitle", \n modified: "sortByModified", \n created: "sortByCreated",\n asc:"sortAsc", \n desc:"sortDesc",\n hide:"hideTagged", \n show:"showTagged",\n nogroup:"noGroupByTag",\n group:"groupByTag",\n cols1:"list1Cols",\n cols2:"list2Cols",\n cols3:"list3Cols",\n cols4:"list4Cols",\n cols5:"list5Cols",\n cols6:"list6Cols",\n cols7:"list7Cols",\n cols8:"list8Cols",\n cols9:"list9Cols" \n}\n\n// note: should match config.macros.tagglyListControl.tags\nconfig.macros.hideSomeTags.tagsToHide = [\n "sortByTitle",\n "sortByCreated",\n "sortByModified",\n "sortDesc",\n "sortAsc",\n "hideTagged",\n "showTagged",\n "noGroupByTag",\n "groupByTag",\n "list1Cols",\n "list2Cols",\n "list3Cols",\n "list4Cols",\n "list5Cols",\n "list6Cols",\n "list7Cols",\n "list8Cols",\n "list9Cols"\n];\n\n\n//}}}\n/***\n\n!Utils\n***/\n//{{{\n// from Eric\nfunction isTagged(title,tag) {\n var t=store.getTiddler(title); if (!t) return false;\n return (t.tags.find(tag)!=null);\n}\n\n// from Eric\nfunction toggleTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)==null) t.tags.push(tag);\n else t.tags.splice(t.tags.find(tag),1);\n}\n\nfunction addTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n t.tags.push(tag);\n}\n\nfunction removeTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);\n}\n\n// from Udo\nArray.prototype.indexOf = function(item) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] == item) {\n return i;\n }\n }\n return -1;\n};\nArray.prototype.contains = function(item) {\n return (this.indexOf(item) >= 0);\n}\n//}}}\n/***\n\n!tagglyList\ndisplays a list of tagged tiddlers. \nparameters are sortField and sortOrder\n***/\n//{{{\n\n// not used at the moment...\nfunction sortedListOfOtherTags(tiddler,thisTag) {\n var list = tiddler.tags.concat(); // so we are working on a clone..\n for (var i=0;i<config.macros.hideSomeTags.tagsToHide.length;i++) {\n if (list.find(config.macros.hideSomeTags.tagsToHide[i]) != null)\n list.splice(list.find(config.macros.hideSomeTags.tagsToHide[i]),1); // remove hidden ones\n }\n for (var i=0;i<config.macros.tagglyListByTag.excludeTheseTags.length;i++) {\n if (list.find(config.macros.tagglyListByTag.excludeTheseTags[i]) != null)\n list.splice(list.find(config.macros.tagglyListByTag.excludeTheseTags[i]),1); // remove excluded ones\n }\n list.splice(list.find(thisTag),1); // remove thisTag\n return '[[' + list.sort().join("]] [[") + ']]';\n}\n\nfunction sortHelper(a,b) {\n if (a == b) return 0;\n else if (a < b) return -1;\n else return +1;\n}\n\nconfig.macros.tagglyListByTag.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n\n var sortBy = params[0] ? params[0] : "title"; \n var sortOrder = params[1] ? params[1] : "asc";\n\n var result = store.getTaggedTiddlers(tiddler.title,sortBy);\n\n if (sortOrder == "desc")\n result = result.reverse();\n\n var leftOvers = []\n for (var i=0;i<result.length;i++) {\n leftOvers.push(result[i].title);\n }\n\n var allTagsHolder = {};\n for (var i=0;i<result.length;i++) {\n for (var j=0;j<result[i].tags.length;j++) {\n\n if ( \n result[i].tags[j] != tiddler.title // not this tiddler\n && config.macros.hideSomeTags.tagsToHide.find(result[i].tags[j]) == null // not a hidden one\n && config.macros.tagglyListByTag.excludeTheseTags.find(result[i].tags[j]) == null // not excluded\n ) {\n if (!allTagsHolder[result[i].tags[j]])\n allTagsHolder[result[i].tags[j]] = "";\n allTagsHolder[result[i].tags[j]] += "**[["+result[i].title+"]]\sn";\n\n if (leftOvers.find(result[i].title) != null)\n leftOvers.splice(leftOvers.find(result[i].title),1); // remove from leftovers. at the end it will contain the leftovers...\n }\n }\n }\n\n\n var allTags = [];\n for (var t in allTagsHolder)\n allTags.push(t);\n\n allTags.sort(function(a,b) {\n var tidA = store.getTiddler(a);\n var tidB = store.getTiddler(b);\n if (sortBy == "title") return sortHelper(a,b);\n else if (!tidA && !tidB) return 0;\n else if (!tidA) return -1;\n else if (!tidB) return +1;\n else return sortHelper(tidA[sortBy],tidB[sortBy]);\n });\n\n var markup = "";\n\n if (sortOrder == "desc") {\n allTags.reverse();\n }\n else {\n // leftovers first...\n for (var i=0;i<leftOvers.length;i++)\n markup += "*[["+leftOvers[i]+"]]\sn";\n } \n\n for (var i=0;i<allTags.length;i++)\n markup += "*[["+allTags[i]+"]]\sn" + allTagsHolder[allTags[i]];\n\n if (sortOrder == "desc") {\n // leftovers last...\n for (var i=0;i<leftOvers.length;i++)\n markup += "*[["+leftOvers[i]+"]]\sn";\n }\n\n wikify(markup,place);\n}\n\nconfig.macros.tagglyList.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n var sortBy = params[0] ? params[0] : "title"; \n var sortOrder = params[1] ? params[1] : "asc";\n var numCols = params[2] ? params[2] : 1;\n\n var result = store.getTaggedTiddlers(tiddler.title,sortBy);\n if (sortOrder == "desc")\n result = result.reverse();\n\n var listSize = result.length;\n var colSize = listSize/numCols;\n var remainder = listSize % numCols;\n\n var upperColsize;\n var lowerColsize;\n if (colSize != Math.floor(colSize)) {\n // it's not an exact fit so..\n lowerColsize = Math.floor(colSize);\n upperColsize = Math.floor(colSize) + 1;\n }\n else {\n lowerColsize = colSize;\n upperColsize = colSize;\n }\n\n var markup = "";\n var c=0;\n\n var newTaggedTable = createTiddlyElement(place,"table");\n var newTaggedBody = createTiddlyElement(newTaggedTable,"tbody");\n var newTaggedTr = createTiddlyElement(newTaggedBody,"tr");\n\n for (var j=0;j<numCols;j++) {\n var foo = "";\n var thisSize;\n\n if (j<remainder)\n thisSize = upperColsize;\n else\n thisSize = lowerColsize;\n\n for (var i=0;i<thisSize;i++) \n foo += ( "*[[" + result[c++].title + "]]\sn"); // was using splitList.shift() but didn't work in IE;\n\n var newTd = createTiddlyElement(newTaggedTr,"td",null,"tagglyTagging");\n wikify(foo,newTd);\n\n }\n\n};\n\n/* snip for later.....\n //var groupBy = params[3] ? params[3] : "t.title.substr(0,1)";\n //var groupBy = params[3] ? params[3] : "sortedListOfOtherTags(t,tiddler.title)";\n //var groupBy = params[3] ? params[3] : "t.modified";\n var groupBy = null; // for now. groupBy here is working but disabled for now.\n\n var prevGroup = "";\n var thisGroup = "";\n\n if (groupBy) {\n result.sort(function(a,b) {\n var t = a; var aSortVal = eval(groupBy); var aSortVal2 = eval("t".sortBy);\n var t = b; var bSortVal = eval(groupBy); var bSortVal2 = eval("t".sortBy);\n var t = b; var bSortVal2 = eval(groupBy);\n return (aSortVal == bSortVal ?\n (aSortVal2 == bSortVal2 ? 0 : (aSortVal2 < bSortVal2 ? -1 : +1)) // yuck\n : (aSortVal < bSortVal ? -1 : +1));\n });\n }\n\n if (groupBy) {\n thisGroup = eval(groupBy);\n if (thisGroup != prevGroup)\n markup += "*[["+thisGroup+']]\sn';\n markup += "**[["+t.title+']]\sn';\n prevGroup = thisGroup;\n }\n\n\n\n*/\n\n\n//}}}\n\n/***\n\n!tagglyListControl\nUse to make the sort control buttons\n***/\n//{{{\n\nfunction getSortBy(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.sortBy;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["title"])) return "title";\n else if (tiddler.tags.contains(usetags["modified"])) return "modified";\n else if (tiddler.tags.contains(usetags["created"])) return "created";\n else return defaultVal;\n}\n\nfunction getSortOrder(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.sortOrder;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["asc"])) return "asc";\n else if (tiddler.tags.contains(usetags["desc"])) return "desc";\n else return defaultVal;\n}\n\nfunction getHideState(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.hideState;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["hide"])) return "hide";\n else if (tiddler.tags.contains(usetags["show"])) return "show";\n else return defaultVal;\n}\n\nfunction getGroupState(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.groupState;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["group"])) return "group";\n else if (tiddler.tags.contains(usetags["nogroup"])) return "nogroup";\n else return defaultVal;\n}\n\nfunction getNumCols(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.numCols; // an int\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n for (var i=1;i<=config.macros.tagglyListWithSort.maxCols;i++)\n if (tiddler.tags.contains(usetags["cols"+i])) return i;\n return defaultVal;\n}\n\n\nfunction getSortLabel(title,which) {\n // TODO. the strings here should be definable in config\n var by = getSortBy(title);\n var order = getSortOrder(title);\n var hide = getHideState(title);\n var group = getGroupState(title);\n if (which == "hide") return (hide == "show" ? "−" : "+"); // 0x25b8;\n else if (which == "group") return (group == "group" ? "normal" : "grouped");\n else if (which == "cols") return "cols±"; // ±\n else if (by == which) return which + (order == "asc" ? "↓" : "↑"); // ↑ ↓\n else return which;\n}\n\nfunction handleSortClick(title,which) {\n var currentSortBy = getSortBy(title);\n var currentSortOrder = getSortOrder(title);\n var currentHideState = getHideState(title);\n var currentGroupState = getGroupState(title);\n var currentNumCols = getNumCols(title);\n\n var tags = config.macros.tagglyListControl.tags;\n\n // if it doesn't exist, lets create it..\n if (!store.getTiddler(title))\n store.saveTiddler(title,title,"",config.options.txtUserName,new Date(),null);\n\n if (which == "hide") {\n // toggle hide state\n var newHideState = (currentHideState == "hide" ? "show" : "hide");\n removeTag(title,tags[currentHideState]);\n if (newHideState != config.macros.tagglyListWithSort.defaults.hideState)\n toggleTag(title,tags[newHideState]);\n }\n else if (which == "group") {\n // toggle hide state\n var newGroupState = (currentGroupState == "group" ? "nogroup" : "group");\n removeTag(title,tags[currentGroupState]);\n if (newGroupState != config.macros.tagglyListWithSort.defaults.groupState)\n toggleTag(title,tags[newGroupState]);\n }\n else if (which == "cols") {\n // toggle num cols\n var newNumCols = currentNumCols + 1; // confusing. currentNumCols is an int\n if (newNumCols > config.macros.tagglyListWithSort.maxCols || newNumCols > store.getTaggedTiddlers(title).length)\n newNumCols = 1;\n removeTag(title,tags["cols"+currentNumCols]);\n if (("cols"+newNumCols) != config.macros.tagglyListWithSort.defaults.groupState)\n toggleTag(title,tags["cols"+newNumCols]);\n }\n else if (currentSortBy == which) {\n // toggle sort order\n var newSortOrder = (currentSortOrder == "asc" ? "desc" : "asc");\n removeTag(title,tags[currentSortOrder]);\n if (newSortOrder != config.macros.tagglyListWithSort.defaults.sortOrder)\n toggleTag(title,tags[newSortOrder]);\n }\n else {\n // change sortBy only\n removeTag(title,tags["title"]);\n removeTag(title,tags["created"]);\n removeTag(title,tags["modified"]);\n\n if (which != config.macros.tagglyListWithSort.defaults.sortBy)\n toggleTag(title,tags[which]);\n }\n\n store.setDirty(true); // save is required now.\n story.refreshTiddler(title,false,true); // force=true\n}\n\nconfig.macros.tagglyListControl.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n var onclick = function(e) {\n if (!e) var e = window.event;\n handleSortClick(tiddler.title,params[0]);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n };\n createTiddlyButton(place,getSortLabel(tiddler.title,params[0]),"Click to change sort options",onclick,params[0]=="hide"?"hidebutton":"button");\n}\n//}}}\n/***\n\n!tagglyListWithSort\nput it all together..\n***/\n//{{{\nconfig.macros.tagglyListWithSort.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n if (tiddler && store.getTaggedTiddlers(tiddler.title).length > 0)\n // todo make this readable\n wikify(\n "<<tagglyListControl hide>>"+\n (getHideState(tiddler.title) != "hide" ? \n '<html><span class="tagglyLabel">'+config.macros.tagglyList.label.format([tiddler.title])+' </span></html>'+\n "<<tagglyListControl title>><<tagglyListControl modified>><<tagglyListControl created>><<tagglyListControl group>>"+(getGroupState(tiddler.title)=="group"?"":"<<tagglyListControl cols>>")+"\sn" + \n "<<tagglyList" + (getGroupState(tiddler.title)=="group"?"ByTag ":" ") + getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+" "+getNumCols(tiddler.title)+">>" // hacky\n // + \sn----\sn" +\n //"<<tagglyList "+getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+">>"\n : ""),\n place,null,tiddler);\n}\n\n//}}}\n/***\n\n!hideSomeTags\nSo we don't see the sort tags.\n(note, they are still there when you edit. Will that be too annoying?\n***/\n//{{{\n\n// based on tags.handler\nconfig.macros.hideSomeTags.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n var theList = createTiddlyElement(place,"ul");\n if(params[0] && store.tiddlerExists[params[0]])\n tiddler = store.getTiddler(params[0]);\n var lingo = config.views.wikified.tag;\n var prompt = tiddler.tags.length == 0 ? lingo.labelNoTags : lingo.labelTags;\n createTiddlyElement(theList,"li",null,"listTitle",prompt.format([tiddler.title]));\n for(var t=0; t<tiddler.tags.length; t++)\n if (!this.tagsToHide.contains(tiddler.tags[t])) // this is the only difference from tags.handler...\n createTagButton(createTiddlyElement(theList,"li"),tiddler.tags[t],tiddler.title);\n\n}\n\n//}}}\n/***\n\n!Refresh everything when we save a tiddler. So the tagged lists never get stale. Is this too slow???\n***/\n//{{{\n\nfunction refreshAllVisible() {\n story.forEachTiddler(function(title,element) {\n if (element.getAttribute("dirty") != "true") \n story.refreshTiddler(title,false,true);\n });\n}\n\nstory.saveTiddler_orig_mptw = story.saveTiddler;\nstory.saveTiddler = function(title,minorUpdate) {\n var result = this.saveTiddler_orig_mptw(title,minorUpdate);\n refreshAllVisible();\n return result;\n}\n\nstore.removeTiddler_orig_mptw = store.removeTiddler;\nstore.removeTiddler = function(title) {\n this.removeTiddler_orig_mptw(title);\n refreshAllVisible();\n}\n\n//}}}\n\n// // <html>▸▾−±</html>
/***\nTo use, add {{{[[TagglyTaggingStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also ViewTemplate, EditTemplate and TagglyTagging.\n***/\n/*{{{*/\n.tagglyTagged li.listTitle { display:none;}\n.tagglyTagged li { display: inline; font-size:90%; }\n.tagglyTagged ul { margin:0px; padding:0px; }\n.tagglyTagging { padding-top:0.5em; }\n.tagglyTagging li.listTitle { display:none;}\n.tagglyTagging ul { margin-top:0px;