* Added the upload email functionality (#242)

* 1. Done changes in directives for testing some functionality. (#243)

2. Fixed the click issue on buttons in flyout issue in documents and matters page.
3. Fixed some css issues in matters page.

* Added code fix for the mailupload and documentflyout bugs

* Added code to support runtime changes to AppSettings.json file (#244)

* Fixed the bugs in the upload emails and attachments from OWA

* Added code to fix one edge scenario when uploading attachments using outlook and owa

* Added code to support runtime changes to AppSettings.json file. The new code will take the new updates values from the appsettings.json file and updates its corresponding strongly typed classes

* 1. Done changes to show the loader when scrolling in matters page. (#247)

2. Added the functionality for infinite scroll in documents page.
3. Added code for custom flyout in matters page.
4. Replaced the link for view matters in mattercelltemplate.

* Mattercenter2 (#248)

Added code to include 5 level hierarchy for the taxonomy

* 1. Fixed the search issue for other criterias in matters and documents page. (#249)

2. Added code for the custom directive in matters controller page.
3. Added new factory for the common controls in home controller.

* Code changes for Flyout Menu issues in the matter controller
Code changes for wrong matter information in the flyout menu in the matter controller

* Added code to support file upload from user desktop to matter center from the flyout menu (#250)

Added code to support file upload from user desktop to matter center from the fly-out menu

* Added code to support file upload from desktop to matter center

* Added proper comments to the document controller and other interface classes
Removed javascript alert method from the angular js code

* Update .gitignore

added project.lock.json  to gitignore

* removed project.lock.json from source control.

* removed solution that are not required for building web site.

* 1. Implemented custom flyout in document page.
2. Done changes for the css to make flyout visible as per the responsive design in both matters and documents page.
3. Fixed the scroll issues in both matters and document pages.
4. Moved the directive code from matters page to common.directives page.

* 1. Implemented custom flyout in document page. (#252)

2. Done changes for the css to make flyout visible as per the responsive design in both matters and documents page.
3. Fixed the scroll issues in both matters and document pages.
4. Moved the directive code from matters page to common.directives page.

* 1. Fixed the scroll issue for the grid in matters and document pages.
2. Removed the unwanted code in files.

* Reading clien terms from any hierarchy (#253)

* Fixed the bugs in the upload emails and attachments from OWA

* Added code to fix one edge scenario when uploading attachments using outlook and owa

* Added code to support runtime changes to AppSettings.json file. The new code will take the new updates values from the appsettings.json file and updates its corresponding strongly typed classes

* Added code to include 5 level hierarchy for the taxonomy

* Added code to support file upload from desktop to matter center

* Added code to read client terms from any position in taxonomy hierarchy
Moved all the interfaces to interfaces folder
Added comments to some of the methods so that it will be helpful in the future

* Migrating Test Project on RC2 (#255)

Adding the integration test project to the matter center project

* Modified theintegration test files to be compatible to RC2

* Added code to support 5 level of taxonomy hierarchy
Associate parent term custom properties to child term, if the custom properties are not available for the child terms

* Added code to support 5 level of taxonomy hierarchy (#257)

Associate parent term custom properties to child term, if the custom properties are not available for the child terms

* Bug fix  697980 and generic doc image src fix (#258)

* 1. Fixed the email issue for sending an email to support in navigation page. (#259)

2. Added the code for dropdown directive for filters in common directives
3. Fixed the search issue for the typehead in matters and documents page.
4. fixed some css issue for the matters page

* Implemented the new taxonomy changes to support multi hierarchy
Made changes to the code when creating matter to support external sharing
Added new app settings in appsettings.json to support multi hierarchy

* Added comment to the method

* Mattercenter2 (#261)

* Added code to support 5 level of taxonomy hierarchy
Associate parent term custom properties to child term, if the custom properties are not available for the child terms

* Implemented the new taxonomy changes to support multi hierarchy
Made changes to the code when creating matter to support external sharing
Added new app settings in appsettings.json to support multi hierarchy

* Added comment to the method

* 1. Fixed the issues for showing and hiding the filters when clicked on headers in matters page.
2. Removed the unwanted code from all templates and directives respective to matters.
3. Updated some css in site.css page

* 1. Fixed the issues for showing and hiding the filters when clicked on headers in matters page. (#263)

2. Removed the unwanted code from all templates and directives respective to matters.
3. Updated some css in site.css page

* 1. Fixed the issue for the navigation of url in document flyout.
2. Added some functionality required to get the document assests in documents controller
3. Removed the body scroll and made scroll visible as per the browser height in matters and documents page
4. Replaced some css with other in site.css
5. Done changes in document templates

* Changed the hardcoded urls to the config urls and compose mode attachments section (#264)

* Adding layers to read Configs from Azure Table Storage

* 1. Fixed the issues for the modified date filters in matters and document pages. (#266)

2. Fixed the issue for showing and hiding of the filter icon for the headers in matters and documents pages.
3. Added code for clear filters for headers in both matters and document pages.
4. Removed unwanted code from templates of matters and documents.
5. Implemented search filters for headers in document page.

* Added a new web api method in UserController to check whether a user exists or not in the site

* Added a new method which will check whether a user exists or not in the site. This is used in external sharing scenario (#267)

* Added code to support 5 level of taxonomy hierarchy
Associate parent term custom properties to child term, if the custom properties are not available for the child terms

* Implemented the new taxonomy changes to support multi hierarchy
Made changes to the code when creating matter to support external sharing
Added new app settings in appsettings.json to support multi hierarchy

* Added comment to the method

* Added a new web api method in UserController to check whether a user exists or not in the site. This method will be used in external sharing scenario

* code changes for Bugs (#268)

* Fixed the file upload issue in the matter and the document search page is broken as one of the function does doesnot have a closing braces

* Solution for bug 698013 for documentdashboard page flyout close on click on maindiv. (#269)

* Code changes has been done to support n levels of taxonomy hierarchy. AssignContentType api MatterController.cs api has been updated.

Other supporting files has also been updated to support new term hierarchy model

* codefixes for mailsubject, selectType in createMatter. createMatter Assignteam functionality impelmentation (#272)

* 1. Fixed the overflow issue for the grid in matters and document pages for responsive. (#271)

2. Added the new class for templates in matters and documents.
3. Added changes for flyout and design issues in document dashboard page.
4. Fixed the issue for the search filters in document page.

* Unit test to test Config Rep

* Fixed the owa url for office related documents

* 1. Added changes for the searchresults based on in screen resolution matters and dashboard page. (#274)

2. Done changes to display flyout in matter dashboard page.
3. Added code for the search in matters dashboard page.
4. Replaced some css in site.css

* Mattercenter2 (#273)

* Changes regarding Bug 697917 : Full text search is not working. After changing single quote to double quotes it is giving desirable results.

* Changes for Bug 697917 : Full text search is not working. After changing single quote to double quotes it is giving desirable results.

* Mattercenter2 (#276)

* Changes regarding Bug 697917 : Full text search is not working. After changing single quote to double quotes it is giving desirable results.

* Changes for Bug 697917 : Full text search is not working. After changing single quote to double quotes it is giving desirable results.

* Resolution for alignment behaviour observed as part of bug 698013.

* Modified code to implement External Sharing
Removed the dependency of SPO authorization from Controllers
Modified the JOBS code to update external sharing functionality

* 1. Fixed the issue for search flyout functionality in matters and documents page. (#277)

2. Removed unwanted code from matters, mattersdashboard and document dashboard.
3. Added code for showing and hiding of grid during the api calls in mattersdashboard and documentdashboard.
4. Fixed other functionality issues in both dashboard pages.

* Changes for open clientfilter dropdown alignemnt and implementation o… (#279)

* Changes for open clientfilter dropdown alignemnt and implementation of progress bar while fetching the data. 698013.
Done changes for making cancel  button functionality to work in search criteria

* Fixed the file upload issue in the matter dashboard page

* Added new files for assign user permissions screen
Fixed the get matter stamped properties api

* Chnages for UI config

* Fixed the Get Stampled Properties API

* New files for manage users screen has been added. This will be called from the matter landing page when the user clicks on "Manage Users" link from the people picker

* 1. Added typehead code for search in matters dashboard page. (#280)

2. Added typehead code for search and author search in documents  dashboard page.
3. Done changes for the pagination errors in matters and document dahsboard pages.

* Added the Sharing Matters for external users functionality (#281)

* Updated UserExists API with JSON return object

* Fixed the MatterStampedDetails method

* Revert "Updated UserExists API with JSON return object"

This reverts commit 668a430484.

* Revert "Revert "Updated UserExists API with JSON return object""

This reverts commit ef28b56b96.

* Removed the commented code from the controllers related to authorization
Updated configure swagger metod in the startup.cs file
Updated the web project to generate xml files for the comments and that will be consumed by the web api
Updated the xml comments for the document controller. Will update the xml comments for other controller too

* When setting property bag for a matter, MatterCenterUserEmails and MatterCenterAttroneyEmail was not set and that was fixed

* Changes required to close advance search popup and progress bar on error while getting document and listguid (#282)

* Done the UI implementation for the manage users screen from people picker  in matterlanding page. (#283)

* Cleanup

* Added header portion to both document and matter dashboard html pages

* Added header and footer to the document dashboard and matter dashboard html pages

* updated the position of the advanced filter drop down in matter and document dashboard

* If the current user email is part of the organization, no user email validation will be done on the api side
Added a new settings in the general settings section called "OrgDomainName"
Fixed the external sharing api code. Instead of using Matter Id changed that to Matter Guid

* If the current user email is part of the organization, no user email validation will be done on the api side (#284)

Added a new settings in the general settings section called "OrgDomainName"
Fixed the external sharing api code. Instead of using Matter Id changed that to Matter Guid

* Final change for config

* Fix, merge issue in Appsettings

* Added Mange Users functionality in matterlanding page (#287)

* Added changes for the close and hide of the header flyout in the matters and documents dashboard pages. (#286)

1. Added changes for showing and hiding of the profile and help icon in the home page.
2. Removed the header and footer code from the navigation, matterdashboard, document dashboard pages and placed it in the home page.
3. Fixed the ui changes for the search flyout, header menu and  showing the loader with the content in the matters and documents dashboard pages

* added comments to the code

* Modified the authorization logic to sent 401 status response for unauthorized requests (#288)

* If the current user email is part of the organization, no user email validation will be done on the api side
Added a new settings in the general settings section called "OrgDomainName"
Fixed the external sharing api code. Instead of using Matter Id changed that to Matter Guid

* added comments to the code

* Merge

* Fix merge issue

* Changes for Clients, PGS, AOLs selections in advancesearch of Documen… (#289)

* Changes for Clients, PGS, AOLs selections in advancesearch of Document and Matter dashboard pages.
Handling client user input events of  Clients, PGS, AOLs selections.

* Code changes to work with advance ssearch in DocumentDashboard Page.

* Code cleanup and  some mino bug fixes

* Fixed the responsive issues for the sharepoint search header in home page. (#290)

1. Fixed the UI width issue for the search flyout in the matters and document dashboard pages.
2. Fixed the responsive issues for the footer in home page.
3. Replaced the old html with the bootstrap html for the header and footer in matters and documents dasboard.
4. Added the new directive to perform the click event during the press of the enter button in keyboard

* Updated based on code review comments

* Changes required to make same behaviour for Author Search on Document dashboard page. (#291)

* Fixed the issue for the sharepoint search to be visible in particular sharepoint pages. (#292)

1. Fixed the issue for the pagination to display the total number of element when reahced the final click of the next button.

* Added the code to update the matter team roles and permissions in manageusers screen. (#293)

* Update API annd and Repository to take a filter condition to get a subset of the Configs. Added a new TC to test this

* Code Review changes

* Modified code for external sharing

* Add existing file

* Updated the project.json file

* Testing Azure to Github Continuous Deployment

* Testing remote deployment

* Changed Home Controller to use the uiconfig entries instaed of hardcoding label values

* Added validation function for manageusers and added manageColumns attribute in the request parameter in creatematter module. (#297)

* 1. Fixed the position issues in the matter users (#296)

* Added code for external sharing functionality

* Remove Repository Test Project form .gitignore

* Updated code to read settings from appsettings.json
Added run.cmd file to support Azure Web Jobs

* 1. Fixed the issues for the error pop up in the create matter when adding the external user.
2. Implemented the functionality to prevent the multiple api calls for the blur in create matters.
3. Implemented the functionality to check the previous external user was confirmed or not.
4. Added some changes in home page.

* 1. Removed the hardcoded values for Id's in stampproperties function in creatematter controller

* 1. Fixed the issues for the error pop up in the create matter when ad… (#299)

* 1. Fixed the issues for the error pop up in the create matter when adding the external user.
2. Implemented the functionality to prevent the multiple api calls for the blur in create matters.
3. Implemented the functionality to check the previous external user was confirmed or not.
4. Added some changes in home page.

* 1. Removed the hardcoded values for Id's in stampproperties function in creatematter controller

* Fixed the issue for the input when there are no results during the click of tab key from keyboard.

* Changes required to higlight either document else Email folder while upload. (#300)

Add an optional extended description…

* Fixed the matter status in the job project

* Made the method to private

* Fixed the tab issue for external user when creating matter

* Added changes to update some text with the dynamic content. (#303)

1. Added changes to get the dynamic content in Matters and navigation pages.
2. Replaced html text with dynamic content for matters templates.
3. Added some changes in create matters controller

* Added code to update the config.js using NewtonSoft.json package (#304)

* Added code to update the config.js using NewtonSoft.json package

* Updated the startup.cs to include the Search settings in the config.js file

* Fixed the code in matter creation controller. Renamed "vm" to "cm"

* Migration from RC2 to RTM. (#305)

* Replaced hard coded values to the dynamic values from config (#306)

* Update matters.controller.js

* Replaced some text with dynamic content

* updated the scope variable to camelcasing

* Updated the scope variable to camelcasing

* Added changes to scope variable

* Added changes to the scope variable

* Updated the solution to include all the projects when doing build

Update the code to allow the user to press enter key when adding an external user

* added instrument key for logging clientside events

* Added code to fix the issue for multiple external users when creating the matter (#308)

* Added code to update the config.js using NewtonSoft.json package

* Updated the startup.cs to include the Search settings in the config.js file

* Added code to fix the external sharing for multiple external users
Added stack trace column  to the azure logging table

* 1. Replaced the hardcoded text with the dynamic content from the config in the document controller and html pages. (#309)

2. Added changes for the dynamic values in the navigation controller and html pages.
3. Fixed the UI scroll issues in the document page.

* Mattercenter2 (#307)

* Addin InsertAndUpdate for configs.

* Insert Update config API

* Final changes  for Insert/Update

* Changes for RC2 to RTM upgrade

* Changed to make the Table and Column names for UIConfiguration configurable and added a helper method for getting the Cloud table reference

* Updated code to include app insights information into config.js

* 1. Added new css styles for the grid menu in site.css.
2. Added changes for the grid menu functionality in matters and documents pages.
3. Added new directive in common directives for the grid menu to work in responsive.
4. Replaced hardcoded values with dynamic values in matters and navigation pages.

* Mattercenter2 (#310)

* Added code to update the config.js using NewtonSoft.json package

* Updated the startup.cs to include the Search settings in the config.js file

* Added code to fix the external sharing for multiple external users
Added stack trace column  to the azure logging table

* Fixed minor issues in external sharing user story

* 1. Added new css styles for the grid menu in site.css. (#313)

2. Added changes for the grid menu functionality in matters and documents pages.
3. Added new directive in common directives for the grid menu to work in responsive.
4. Replaced hardcoded values with dynamic values in matters and navigation pages.

* removed config.js. fixed instrumentation key issue

* added config.js to gitinore

* 1. Replaced grid menu css in matters and dashboard pages.
2. Added new css for the grid menu for some icons classes in grid
3. Added fucntionality for the export grid data to the excel in matterdashboard page.
4. Done changes for the some directives related to the grid menu to show and hide the icons.
5. Added plugin references of the exporting excel in index page

* Implemented one note changes (#314)

* Added code to update the config.js using NewtonSoft.json package

* Updated the startup.cs to include the Search settings in the config.js file

* Added code to fix the external sharing for multiple external users
Added stack trace column  to the azure logging table

* Fixed minor issues in external sharing user story

* One note title fix. Instead of GUID, now the matter name will become the title for one note

* Implemented pull request comments

* Implemented custom event logging function.

* Changes for configuring static content from Azure Table. (#317)

* Removed the duplicate settings from matter settings files. Referred those settings from GeneralSettings which are already present

Updated the project.json settings for xunit nuget packages

* Configuring static content from Azure table. (#319)

* Changes for configuring static content from Azure Table.

* Configuring static content from Azure table.

* Configurable changes for static content in Matters and Documents pages (#320)

* Changes for configuring static content from Azure Table.

* Configuring static content from Azure table.

* Configurable changes for static content in Matters and Documents pages

* 1. Fixed the issues for the column picker in matters and documents. (#322)

2. Fixed some design issues for the menu in matter and documents.
3. Fixed the errors in matters and documents after changing the hardcoded values with uiconfig values.

* The documents were not getting displayed in the document details page. To fix that issue this change has been made

* Mattercenter2 (#321)

* Added code to update the config.js using NewtonSoft.json package

* Updated the startup.cs to include the Search settings in the config.js file

* Added code to fix the external sharing for multiple external users
Added stack trace column  to the azure logging table

* Fixed minor issues in external sharing user story

* One note title fix. Instead of GUID, now the matter name will become the title for one note

* Implemented pull request comments

* Added the logic to see whether the login user can create matter or not

* Removed ProvisionMatterUrl settings and made changes to the code to replace provision matter url to central repository url

* Updated the code to check whether the user can create matter or not from the SendMail list instead of checking from the SharePoint security group

* Changed the order of check boxes in the final step of matter creation. Email Notification will come first, then tasks, then calendar and last RSS Feeds

* 1. Fixed the design issue for the export button and added the xls image beside the button in matterdashboard page. (#325)

2. Added setting.html,settings.controller,settings.resource pages.
3. Added some functionality for getting the taxonomydata
4. Done some changes for home.html,index.html files

* Added related code to save matter configurations to sharepoint list.

* Configuring statitc content to Azure Table for Matters and Documents pages (#326)

* added apptype to appinsights log..

* Mattercenter2 (#328)

* Configuring statitc content to Azure Table for Matters and Documents pages

* Configuring Static Content for MatterDashboard and Home pages from Azure Table

* Fixed Issues in creatematter page. (#329)

* Mattercenter2 (#331)

* 1. Fixed the design issue for the export button and added the xls image beside the button in matterdashboard page.
2. Added setting.html,settings.controller,settings.resource pages.
3. Added some functionality for getting the taxonomydata
4. Done some changes for home.html,index.html files

* 1. Designed the html for the settings page with bootstrap.
2. Added functionality for getting the various api's to bind the data dynamically in settings page.
3. Replaced some css in filterpanel.css,settings.css,webdashboard.css.
4. Added new css in site.css for settings page
5. Removed the export button in matterdashboard page.
6. Removed the unwanted code from the home.html

* Configuring static  content for matter dashboard, DocumentDashboard, Create Matter

* Configuring static  content for matter dashboard, DocumentDashboard, Create Matter (#333)

* Configuring static content to Azure table for Flyout and column filters in matters and Documents pages.

* Mattercenter2 (#335)

* 1. Fixed the design issue for the export button and added the xls image beside the button in matterdashboard page.
2. Added setting.html,settings.controller,settings.resource pages.
3. Added some functionality for getting the taxonomydata
4. Done some changes for home.html,index.html files

* 1. Designed the html for the settings page with bootstrap.
2. Added functionality for getting the various api's to bind the data dynamically in settings page.
3. Replaced some css in filterpanel.css,settings.css,webdashboard.css.
4. Added new css in site.css for settings page
5. Removed the export button in matterdashboard page.
6. Removed the unwanted code from the home.html

* 1. Removed the menu flyout from navigation, matters , documents and replaced it in home page.
2. Added functionality for saving the configurations in settings page.
3. Replaced some css in site.css.
4. Made some html changes to matters, documents, navigation pages

* Added new section called MatterId type

* Adding Taxonomy Hierarchy Feature (#336)

Adding Taxonomy Hierarchy Feature

* Mattercenter2 (#338)

* Added code to update the config.js using NewtonSoft.json package

* Updated the startup.cs to include the Search settings in the config.js file

* Added code to fix the external sharing for multiple external users
Added stack trace column  to the azure logging table

* Fixed minor issues in external sharing user story

* One note title fix. Instead of GUID, now the matter name will become the title for one note

* Implemented pull request comments

* Added the logic to see whether the login user can create matter or not

* Removed ProvisionMatterUrl settings and made changes to the code to replace provision matter url to central repository url

* Updated the code to check whether the user can create matter or not from the SendMail list instead of checking from the SharePoint security group

* Adding Taxonomy Hierarchy Feature

* Made changes to the code for new taxonomy changes and send email aftrer matter gets created

* Updated appsettings.json to support generic taxonomy level hierarchy

* Fixed some issues related to matter creation for new taxonomy changes

* Changes required for Bug 1057851:Alignment issue at search popup. (#339)

changes control the width and end the searchresults with ellipsis in case of overflow.

* improved appinsights logging

* Updated job project to send notifications when matter gets created

* Added column pickers for both matter and document. Only these column pickers need to be shown in the matter search, document search, matterdashboard and document dashboard

Updated startup.cs to update the config.js file so that angular code can pick up those columns information

* Removed references to "SendGrid"
Updated the web api for saving matter configurations

* Changes to resolve the bug Bug 1057863:Alignment issue at ellipsis menu. (#341)

* fixed issue with outlook client.

* Modified the SaggerGen attributes to the web api and updated the corresponding code in startup.cs file also

* Added new properties to support settings functionality
Added new values to search settings to support dynamic column picker for both matter and document search
Added swagger code to the user controller

* Fixed the code related to settings functionality

* Mattercenter2 (#342)

* 1. Fixed the design issue for the export button and added the xls image beside the button in matterdashboard page.
2. Added setting.html,settings.controller,settings.resource pages.
3. Added some functionality for getting the taxonomydata
4. Done some changes for home.html,index.html files

* 1. Designed the html for the settings page with bootstrap.
2. Added functionality for getting the various api's to bind the data dynamically in settings page.
3. Replaced some css in filterpanel.css,settings.css,webdashboard.css.
4. Added new css in site.css for settings page
5. Removed the export button in matterdashboard page.
6. Removed the unwanted code from the home.html

* 1. Removed the menu flyout from navigation, matters , documents and replaced it in home page.
2. Added functionality for saving the configurations in settings page.
3. Replaced some css in site.css.
4. Made some html changes to matters, documents, navigation pages

* 1. Added changes for the css and functionality in the settings.html and settings.controller page.
2. Replaced the styles with the classes in the settings. html page.
3. Added some css

* Configuring static content to azure table for Settings page. (#344)

* Mattercenter2 (#345)

* 1. Fixed the design issue for the export button and added the xls image beside the button in matterdashboard page.
2. Added setting.html,settings.controller,settings.resource pages.
3. Added some functionality for getting the taxonomydata
4. Done some changes for home.html,index.html files

* 1. Designed the html for the settings page with bootstrap.
2. Added functionality for getting the various api's to bind the data dynamically in settings page.
3. Replaced some css in filterpanel.css,settings.css,webdashboard.css.
4. Added new css in site.css for settings page
5. Removed the export button in matterdashboard page.
6. Removed the unwanted code from the home.html

* 1. Removed the menu flyout from navigation, matters , documents and replaced it in home page.
2. Added functionality for saving the configurations in settings page.
3. Replaced some css in site.css.
4. Made some html changes to matters, documents, navigation pages

* 1. Added changes for the css and functionality in the settings.html and settings.controller page.
2. Replaced the styles with the classes in the settings. html page.
3. Added some css

* 1. Done some css changes for the header in home page.
2. Added some changes for click event in app.js

* Made the UI responsive in TaxonomyHierarchy Implementation. (#346)

* Fixed the issue for settings page and one method has been commented in the create matter controller page

* Implemented deployment for web site.

* removed general setings

* Done create matter UI changes based on new settings in settings page. (#347)

* Made the UI responsive in TaxonomyHierarchy Implementation.

* Done create matter UI changes based on new settings in settings page.

* Made css changes in creatematter page (#349)

* Made the UI responsive in TaxonomyHierarchy Implementation.

* Done create matter UI changes based on new settings in settings page.

* Done css changes in creatematter page.

* Mattercenter2 (#340)

* Addin InsertAndUpdate for configs.

* Insert Update config API

* Final changes  for Insert/Update

* Changes for RC2 to RTM upgrade

* Changed to make the Table and Column names for UIConfiguration configurable and added a helper method for getting the Cloud table reference

* Code to access the client vault

* KeyVault chnages and added KeyVault to WebJob

* Added KeyVaultURI to Configuration and moved KeyVault code rto Helper class

* Code to read KeyVault with certificate

* Added a common project wirh KeyVault code.

* Fixes for dependcies

* Dependency fixes and removal of secets and passworks from appsettings

* Remive commented code and updated keyvault code to hanndle all config sections

* Removed common project due to depency issues and put moved KeyVault coode to individua; projetcs

* Remove commented reference

* Final Cleanup of values added to the Keyvault and changes to the Job and Test project to accomadate keyvualt changes

* Changes to   GetExternalAccessRequestsFromSPO to read the KeyVault.

* Cleanup

* updated .net core sdk version

* Mattercenter2 (#351)

* Added code to update the config.js using NewtonSoft.json package

* Updated the startup.cs to include the Search settings in the config.js file

* Added code to fix the external sharing for multiple external users
Added stack trace column  to the azure logging table

* Fixed minor issues in external sharing user story

* One note title fix. Instead of GUID, now the matter name will become the title for one note

* Implemented pull request comments

* Added the logic to see whether the login user can create matter or not

* Removed ProvisionMatterUrl settings and made changes to the code to replace provision matter url to central repository url

* Updated the code to check whether the user can create matter or not from the SendMail list instead of checking from the SharePoint security group

* Adding Taxonomy Hierarchy Feature

* Made changes to the code for new taxonomy changes and send email aftrer matter gets created

* Updated appsettings.json to support generic taxonomy level hierarchy

* New methods for generating the ui config for SPO

* Mattercenter2 (#353)

* Added code to update the config.js using NewtonSoft.json package

* Updated the startup.cs to include the Search settings in the config.js file

* Added code to fix the external sharing for multiple external users
Added stack trace column  to the azure logging table

* Fixed minor issues in external sharing user story

* One note title fix. Instead of GUID, now the matter name will become the title for one note

* Implemented pull request comments

* Added the logic to see whether the login user can create matter or not

* Removed ProvisionMatterUrl settings and made changes to the code to replace provision matter url to central repository url

* Updated the code to check whether the user can create matter or not from the SendMail list instead of checking from the SharePoint security group

* Adding Taxonomy Hierarchy Feature

* Made changes to the code for new taxonomy changes and send email aftrer matter gets created

* Updated appsettings.json to support generic taxonomy level hierarchy

* New methods for generating the ui config for SPO

* Modified code to have same code base for both matter center and project center for document and matter search

* Updated the matter and document controller for search
The columns in the matter and documents will be coming from config.js
Updated the documenr and matter provision.cs files to have matter or document colunn names instead of generic names so that code will be more readable

* added template and parameters for storage account creation

* Adding Search columns in Matter Dashboard and Document Dashboard are configurable and reading from the Config.js (#355)

* Made the UI responsive in TaxonomyHierarchy Implementation.

* Done create matter UI changes based on new settings in settings page.

* Done css changes in creatematter page.

* Done Search columns in Matter Dashboard and Document Dashboard are  configurable and reading  from the Config.js

* Integration of Jasmine solution with Microsoft latest build (#354)

* Integration of Jasmine with latest Micrsoft build

* Integration of Jasmine with latest Micrsoft build

* removed unnecessary files

* added lib to gitignore and removed two unenecessary projects..

* removed packages from source control

* removed references.js file.

* fixed keyVault certificate issue

* updgraded adal-angular to fix infinite loop issue..

* Chages to Configure CreateMatter Static content and Making Advance search working as per Texonomy level1 and level2 terms changes. (#356)

* Added code to send error response to the client when exception occurs on the api
Added a new property called "IsDevMode". This property can  be used on the client side to display complete error information to the user if that value is true. If that value is false, we will show "simple" message to the end user

* Mattercenter2 (#359)

* Chages to Configure CreateMatter Static content and Making Advance search working as per Texonomy level1 and level2 terms changes.

* This commit is required to get data in create matter pages and for other fixes.

* updated sharepoing deployment
fixed keyvault issue in webjob and test project

* updated sharepoint deployment scripts html

* Added the validaton for externaluser and taxonomy hierarchy responsive UI in create matter page (#361)

* Made the UI responsive in TaxonomyHierarchy Implementation.

* Done create matter UI changes based on new settings in settings page.

* Done css changes in creatematter page.

* Done Search columns in Matter Dashboard and Document Dashboard are  configurable and reading  from the Config.js

* Added the validaton for externaluser and taxonomy hierarchy responsive UI in create matter page

* Fixed Taxonomy UI responsive issue when user minmizes the screen.

* Added the ExternalUser validations in matterusers page.

* Fixed functionality issue in matterusers page

* Incorporated following code review comments
1. In MatterLanding.js file, there is repeated code present on line 518 and 1584.
2. In documentdetails.html file, as we have moved all the static variable in uiconfigforspo.js, we can also move View more field present on line 170.
3. In deploy.ps1 file, as we have removed 2 steps, we need to handle revert scenario for remaining steps.

* Changes required to get sorting of columns as per expected in all browsers. (#362)

* updated deployment document

* Mattercenter2  script to import config files to storage table (#363)

* Changes required to get sorting of columns as per expected in all browsers.

* script to import config files to storage table

* updated deployment document
integrated azuretablestorage, keyvaultsecret deployment scripts

* updated readme, priorities and wikiimages.
This commit is contained in:
Wilson Reddy Gajarla 2016-08-27 04:10:59 -07:00 коммит произвёл GitHub
Родитель 1e6dfbacee
Коммит 98d39b318e
1212 изменённых файлов: 65974 добавлений и 341558 удалений

41
.gitignore поставляемый
Просмотреть файл

@ -7,3 +7,44 @@ tree/master/cloud/src/solution/*/bin
tree/master/cloud/src/solution/*/obj
tree/master/cloud/src/solution/*/pkg/
tree/master/cloud/src/solution/*/pkgobj/
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/node_modules
/tree/master/cloud/src/Helper Utilities/Microsoft.Legal.MatterCenter.HelperUtilities
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/Properties/PublishProfiles
/tree/master/cloud/src/solution/UpgradeLog2.htm
/tree/master/cloud/src/solution/packages
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/artifacts/bin/Microsoft.Legal.MatterCenter.Models/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Models
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/artifacts/bin/Microsoft.Legal.MatterCenter.Repository/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/obj/Debug/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/artifacts/bin/Microsoft.Legal.MatterCenter.Utility/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Utility/obj/Debug/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Models/bin/Debug/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Models/obj/Debug/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/bin/Debug/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/obj/Debug/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Utility/bin/Debug/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Utility/obj/Debug/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.ProviderService/.vs/config
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Models
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/bin/Release/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/obj/Release/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Utility/bin/Release/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Utility/obj/Release/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/wwwroot/css
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.ServiceTest/bin/Debug/net451
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.ServiceTest/obj/Debug/net451
/tree/master/cloud/src/solution/TestResults
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/npm-debug.log
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/bin/Debug/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.ServiceTest/bin/Debug/net46/win7-x64
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.ServiceTest/bin/Debug/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Utility/bin/Debug/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Utility/obj/Debug/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.ServiceTest/obj/Debug/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/obj/Debug/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/bin/Release/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Repository/obj/Release/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Utility/bin/Release/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Service/Microsoft.Legal.MatterCenter.Utility/obj/Release/net46
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/wwwroot/app/config.js
/tree/master/cloud/src/solution/UpgradeLog4.htm
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Jasmine/lib
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/wwwroot/lib
/tree/master/cloud/src/solution/Microsoft.Legal.MatterCenter.Web/wwwroot/js/site.min.js

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -20,6 +20,7 @@
<add key="MatterLandingJSFileName" value="/sites/catalog/SiteAssets/{0}/scripts/MatterLanding.js" />
<add key="CommonCSSFileName" value="/sites/catalog/SiteAssets/{0}/styles/spCommon.css" />
<add key="CommonJSFileName" value="/sites/catalog/SiteAssets/{0}/scripts/spCommon.js" />
<add key="UIConfigforspo" value="/sites/catalog/SiteAssets/{0}/scripts/uiconfigforspo.js" />
<add key="SiteAssets" value="SiteAssets" />
<add key="UserPinnedMatterListName" value="UserPinnedMatter" />
<add key="JQueryFileName" value="/sites/catalog/SiteAssets/{0}/scripts/jquery-1.11.1.min.js" />

Просмотреть файл

@ -1,157 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.Common", "Microsoft.Legal.MatterCenter.Common\Microsoft.Legal.MatterCenter.Common.csproj", "{2E35130D-BE31-4368-AC4D-1E3216ADF13F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.ConfigureLists", "Microsoft.Legal.MatterCenter.ConfigureLists\Microsoft.Legal.MatterCenter.ConfigureLists.csproj", "{5F89E8C3-C780-40A3-8A33-E0990107E61B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.CreateContentTypes", "Microsoft.Legal.MatterCenter.CreateContentTypes\Microsoft.Legal.MatterCenter.CreateContentTypes.csproj", "{A14E9EC0-BFEF-4183-A4E6-3666C5018F05}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.CreateGroups", "Microsoft.Legal.MatterCenter.CreateGroups\Microsoft.Legal.MatterCenter.CreateGroups.csproj", "{E7766CAC-CC79-4823-8BB4-01FEB3E5313E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.CreateSampleData", "Microsoft.Legal.MatterCenter.CreateSampleData\Microsoft.Legal.MatterCenter.CreateSampleData.csproj", "{D421CE3D-8156-466D-8A68-2E5AB0BB81ED}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.CreateSiteCollection", "Microsoft.Legal.MatterCenter.CreateSiteCollection\Microsoft.Legal.MatterCenter.CreateSiteCollection.csproj", "{369E3583-8614-49CE-AF69-C055BA1DCD3A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.CreateTerm", "Microsoft.Legal.MatterCenter.CreateTerm\Microsoft.Legal.MatterCenter.CreateTerm.csproj", "{047ACCD4-35C6-4E6E-9AD1-B7C7EE87E122}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.CreateSiteColumns", "Microsoft.Legal.MatterCenter.CreateSiteColumns\Microsoft.Legal.MatterCenter.CreateSiteColumns.csproj", "{741CE89E-37CD-4245-AC52-B1D0E16FF53E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.ProvisionWebDashboard", "Microsoft.Legal.MatterCenter.ProvisionWebDashboard\Microsoft.Legal.MatterCenter.ProvisionWebDashboard.csproj", "{BFA9FB3A-D256-4ECA-BC07-1009F19DEAD6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.UpdateAppConfig", "Microsoft.Legal.MatterCenter.UpdateAppConfig\Microsoft.Legal.MatterCenter.UpdateAppConfig.csproj", "{862522F4-9838-41C2-827D-CFAB8676C74A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.UpdateListPermissions", "Microsoft.Legal.MatterCenter.UpdateListPermissions\Microsoft.Legal.MatterCenter.UpdateListPermissions.csproj", "{35E35662-0A3D-48C8-B5A9-DAFEE5021179}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.UpdateLists", "Microsoft.Legal.MatterCenter.UpdateLists\Microsoft.Legal.MatterCenter.UpdateLists.csproj", "{0A9458F7-FFDF-4A50-ABAC-85267ECD0D37}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.UpdateTaxonomyFields", "Microsoft.Legal.MatterCenter.UpdateTaxonomyFields\Microsoft.Legal.MatterCenter.UpdateTaxonomyFields.csproj", "{BF3DD4EC-137C-4494-BED9-F19F592237C8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.UpdateView", "Microsoft.Legal.MatterCenter.UpdateView\Microsoft.Legal.MatterCenter.UpdateView.csproj", "{4A74259B-DC46-4D9B-842B-ECC337717E19}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Legal.MatterCenter.UploadFile", "Microsoft.Legal.MatterCenter.UploadFile\Microsoft.Legal.MatterCenter.UploadFile.csproj", "{50CEB765-B476-45CE-9447-50526EEABBDA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2E35130D-BE31-4368-AC4D-1E3216ADF13F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E35130D-BE31-4368-AC4D-1E3216ADF13F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E35130D-BE31-4368-AC4D-1E3216ADF13F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E35130D-BE31-4368-AC4D-1E3216ADF13F}.Release|Any CPU.Build.0 = Release|Any CPU
{5F89E8C3-C780-40A3-8A33-E0990107E61B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5F89E8C3-C780-40A3-8A33-E0990107E61B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5F89E8C3-C780-40A3-8A33-E0990107E61B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F89E8C3-C780-40A3-8A33-E0990107E61B}.Release|Any CPU.Build.0 = Release|Any CPU
{A14E9EC0-BFEF-4183-A4E6-3666C5018F05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A14E9EC0-BFEF-4183-A4E6-3666C5018F05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A14E9EC0-BFEF-4183-A4E6-3666C5018F05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A14E9EC0-BFEF-4183-A4E6-3666C5018F05}.Release|Any CPU.Build.0 = Release|Any CPU
{E7766CAC-CC79-4823-8BB4-01FEB3E5313E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E7766CAC-CC79-4823-8BB4-01FEB3E5313E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E7766CAC-CC79-4823-8BB4-01FEB3E5313E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E7766CAC-CC79-4823-8BB4-01FEB3E5313E}.Release|Any CPU.Build.0 = Release|Any CPU
{D421CE3D-8156-466D-8A68-2E5AB0BB81ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D421CE3D-8156-466D-8A68-2E5AB0BB81ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D421CE3D-8156-466D-8A68-2E5AB0BB81ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D421CE3D-8156-466D-8A68-2E5AB0BB81ED}.Release|Any CPU.Build.0 = Release|Any CPU
{369E3583-8614-49CE-AF69-C055BA1DCD3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{369E3583-8614-49CE-AF69-C055BA1DCD3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{369E3583-8614-49CE-AF69-C055BA1DCD3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{369E3583-8614-49CE-AF69-C055BA1DCD3A}.Release|Any CPU.Build.0 = Release|Any CPU
{047ACCD4-35C6-4E6E-9AD1-B7C7EE87E122}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{047ACCD4-35C6-4E6E-9AD1-B7C7EE87E122}.Debug|Any CPU.Build.0 = Debug|Any CPU
{047ACCD4-35C6-4E6E-9AD1-B7C7EE87E122}.Release|Any CPU.ActiveCfg = Release|Any CPU
{047ACCD4-35C6-4E6E-9AD1-B7C7EE87E122}.Release|Any CPU.Build.0 = Release|Any CPU
{741CE89E-37CD-4245-AC52-B1D0E16FF53E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{741CE89E-37CD-4245-AC52-B1D0E16FF53E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{741CE89E-37CD-4245-AC52-B1D0E16FF53E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{741CE89E-37CD-4245-AC52-B1D0E16FF53E}.Release|Any CPU.Build.0 = Release|Any CPU
{BFA9FB3A-D256-4ECA-BC07-1009F19DEAD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BFA9FB3A-D256-4ECA-BC07-1009F19DEAD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BFA9FB3A-D256-4ECA-BC07-1009F19DEAD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BFA9FB3A-D256-4ECA-BC07-1009F19DEAD6}.Release|Any CPU.Build.0 = Release|Any CPU
{862522F4-9838-41C2-827D-CFAB8676C74A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{862522F4-9838-41C2-827D-CFAB8676C74A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{862522F4-9838-41C2-827D-CFAB8676C74A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{862522F4-9838-41C2-827D-CFAB8676C74A}.Release|Any CPU.Build.0 = Release|Any CPU
{35E35662-0A3D-48C8-B5A9-DAFEE5021179}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35E35662-0A3D-48C8-B5A9-DAFEE5021179}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35E35662-0A3D-48C8-B5A9-DAFEE5021179}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35E35662-0A3D-48C8-B5A9-DAFEE5021179}.Release|Any CPU.Build.0 = Release|Any CPU
{0A9458F7-FFDF-4A50-ABAC-85267ECD0D37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0A9458F7-FFDF-4A50-ABAC-85267ECD0D37}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A9458F7-FFDF-4A50-ABAC-85267ECD0D37}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A9458F7-FFDF-4A50-ABAC-85267ECD0D37}.Release|Any CPU.Build.0 = Release|Any CPU
{BF3DD4EC-137C-4494-BED9-F19F592237C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF3DD4EC-137C-4494-BED9-F19F592237C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF3DD4EC-137C-4494-BED9-F19F592237C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF3DD4EC-137C-4494-BED9-F19F592237C8}.Release|Any CPU.Build.0 = Release|Any CPU
{4A74259B-DC46-4D9B-842B-ECC337717E19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A74259B-DC46-4D9B-842B-ECC337717E19}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A74259B-DC46-4D9B-842B-ECC337717E19}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A74259B-DC46-4D9B-842B-ECC337717E19}.Release|Any CPU.Build.0 = Release|Any CPU
{50CEB765-B476-45CE-9447-50526EEABBDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{50CEB765-B476-45CE-9447-50526EEABBDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{50CEB765-B476-45CE-9447-50526EEABBDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{50CEB765-B476-45CE-9447-50526EEABBDA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 16
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = https://mattercenter.visualstudio.com/defaultcollection
SccLocalPath0 = .
SccProjectUniqueName1 = Microsoft.Legal.MatterCenter.Common\\Microsoft.Legal.MatterCenter.Common.csproj
SccProjectName1 = Microsoft.Legal.MatterCenter.Common
SccLocalPath1 = Microsoft.Legal.MatterCenter.Common
SccProjectUniqueName2 = Microsoft.Legal.MatterCenter.ConfigureLists\\Microsoft.Legal.MatterCenter.ConfigureLists.csproj
SccProjectName2 = Microsoft.Legal.MatterCenter.ConfigureLists
SccLocalPath2 = Microsoft.Legal.MatterCenter.ConfigureLists
SccProjectUniqueName3 = Microsoft.Legal.MatterCenter.CreateContentTypes\\Microsoft.Legal.MatterCenter.CreateContentTypes.csproj
SccProjectName3 = Microsoft.Legal.MatterCenter.CreateContentTypes
SccLocalPath3 = Microsoft.Legal.MatterCenter.CreateContentTypes
SccProjectUniqueName4 = Microsoft.Legal.MatterCenter.CreateGroups\\Microsoft.Legal.MatterCenter.CreateGroups.csproj
SccProjectName4 = Microsoft.Legal.MatterCenter.CreateGroups
SccLocalPath4 = Microsoft.Legal.MatterCenter.CreateGroups
SccProjectUniqueName5 = Microsoft.Legal.MatterCenter.CreateSampleData\\Microsoft.Legal.MatterCenter.CreateSampleData.csproj
SccProjectName5 = Microsoft.Legal.MatterCenter.CreateSampleData
SccLocalPath5 = Microsoft.Legal.MatterCenter.CreateSampleData
SccProjectUniqueName6 = Microsoft.Legal.MatterCenter.CreateSiteCollection\\Microsoft.Legal.MatterCenter.CreateSiteCollection.csproj
SccProjectName6 = Microsoft.Legal.MatterCenter.CreateSiteCollection
SccLocalPath6 = Microsoft.Legal.MatterCenter.CreateSiteCollection
SccProjectUniqueName7 = Microsoft.Legal.MatterCenter.CreateTerm\\Microsoft.Legal.MatterCenter.CreateTerm.csproj
SccProjectName7 = Microsoft.Legal.MatterCenter.CreateTerm
SccLocalPath7 = Microsoft.Legal.MatterCenter.CreateTerm
SccProjectUniqueName8 = Microsoft.Legal.MatterCenter.CreateSiteColumns\\Microsoft.Legal.MatterCenter.CreateSiteColumns.csproj
SccProjectName8 = Microsoft.Legal.MatterCenter.CreateSiteColumns
SccLocalPath8 = Microsoft.Legal.MatterCenter.CreateSiteColumns
SccProjectUniqueName9 = Microsoft.Legal.MatterCenter.ProvisionWebDashboard\\Microsoft.Legal.MatterCenter.ProvisionWebDashboard.csproj
SccProjectName9 = Microsoft.Legal.MatterCenter.ProvisionWebDashboard
SccLocalPath9 = Microsoft.Legal.MatterCenter.ProvisionWebDashboard
SccProjectUniqueName10 = Microsoft.Legal.MatterCenter.UpdateAppConfig\\Microsoft.Legal.MatterCenter.UpdateAppConfig.csproj
SccProjectName10 = Microsoft.Legal.MatterCenter.UpdateAppConfig
SccLocalPath10 = Microsoft.Legal.MatterCenter.UpdateAppConfig
SccProjectUniqueName11 = Microsoft.Legal.MatterCenter.UpdateListPermissions\\Microsoft.Legal.MatterCenter.UpdateListPermissions.csproj
SccProjectName11 = Microsoft.Legal.MatterCenter.UpdateListPermissions
SccLocalPath11 = Microsoft.Legal.MatterCenter.UpdateListPermissions
SccProjectUniqueName12 = Microsoft.Legal.MatterCenter.UpdateLists\\Microsoft.Legal.MatterCenter.UpdateLists.csproj
SccProjectName12 = Microsoft.Legal.MatterCenter.UpdateLists
SccLocalPath12 = Microsoft.Legal.MatterCenter.UpdateLists
SccProjectUniqueName13 = Microsoft.Legal.MatterCenter.UpdateTaxonomyFields\\Microsoft.Legal.MatterCenter.UpdateTaxonomyFields.csproj
SccProjectName13 = Microsoft.Legal.MatterCenter.UpdateTaxonomyFields
SccLocalPath13 = Microsoft.Legal.MatterCenter.UpdateTaxonomyFields
SccProjectUniqueName14 = Microsoft.Legal.MatterCenter.UpdateView\\Microsoft.Legal.MatterCenter.UpdateView.csproj
SccProjectName14 = Microsoft.Legal.MatterCenter.UpdateView
SccLocalPath14 = Microsoft.Legal.MatterCenter.UpdateView
SccProjectUniqueName15 = Microsoft.Legal.MatterCenter.UploadFile\\Microsoft.Legal.MatterCenter.UploadFile.csproj
SccProjectName15 = Microsoft.Legal.MatterCenter.UploadFile
SccLocalPath15 = Microsoft.Legal.MatterCenter.UploadFile
EndGlobalSection
EndGlobal

Просмотреть файл

@ -249,7 +249,7 @@ namespace Microsoft.Legal.MatterCenter.ProvisionWebDashboard
string pageUrlConstant = urlConstantName;
string sourceFileTemplatePath = string.Concat(Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName, Constants.Backslash, ConfigurationManager.AppSettings["staticContentFolder"], Constants.Backslash, ConfigurationManager.AppSettings["htmlFolder"], Constants.Backslash, sourceFileTemplate);
string pageUrl = string.Concat(configVal["UISiteURL"], pageUrlName);
string pageUrl = configVal["UISiteURL"];
// Read the content of helper file
pageContent = System.IO.File.ReadAllText(sourceFileTemplatePath);
// Set the Catalog site collection URL in the content of webdashboard helper page

Просмотреть файл

@ -87,6 +87,7 @@
<add key="MatterLandingPageCSSFileNameValue" value="/{1}/SiteAssets/{0}/styles/MatterLanding.css" />
<add key="CommonCSSLocation" value="/{1}/SiteAssets/{0}/Styles/spCommon.css" />
<add key="CommonJSLocation" value="/{1}/SiteAssets/{0}/Scripts/spCommon.js" />
<add key="UIConfigforspo" value="/{1}/SiteAssets/{0}/scripts/uiconfigforspo.js" />
<add key="OneNoteImageUrlValue" value="/{1}/SiteAssets/{0}/WindowsLoadingFast.GIF" />
<add key="PinImageUrlValue" value="/{1}/SiteAssets/{0}/pin-666.png" />
<add key="ShareImageUrlValue" value="/{1}/SiteAssets/{0}/share_28x28_666.png" />

Просмотреть файл

@ -19,7 +19,7 @@
<add key="Images" value="Images"/>
<add key="Scripts" value="Scripts"/>
<add key="Styles" value="Styles"/>
<add key="ConfigurableFiles" value="MatterLandingPage.js,MatterLanding.js,spCommon.js,documentDetails.js"/>
<add key="ConfigurableFiles" value="MatterLandingPage.js,MatterLanding.js,spCommon.js,documentDetails.js,uiconfigforspo.js"/>
<add key="AppInsightsID" value="[[[App Insights ID]]]"/>
<add key="ManagePermissionUrl" value="[[[Manage Permission Url]]]"/>
<add key="TenantWebDashboardUrl" value="[[[Tenant Web Dashboard Url]]]"/>

Просмотреть файл

@ -8,17 +8,15 @@
# Step 4: Update Office, Outlook and SharePoint App schema files
# Step 5: Update search configuration file and upload to SharePoint
# Step 6: Update resource and config files in build
# Step 7: Activate SharePoint Server Publishing infrastructure feature on catalog site collection
# Step 8: Update App files for SharePoint and OneDrive Ribbon Apps
# Step 9: Encrypting the config files
# Step 10: Publishing files to Azure
# Step 11: Add and install apps to SharePoint and Office
# Step 12: Add apps to Exchange
# Step 13: Upload files to SharePoint Library
# Step 14: Creating Site Collection(s)
# Step 15: Provisioning Web dashboard
# Step 16: Update site collection view with field(s)
# Step 17: Creating source in event viewer
# Step 7: Activate SharePoint Server Publishing infrastructure feature on catalog site collection
# Step 8: Encrypting the config files
# Step 9: Add and install apps to SharePoint and Office
# Step 10: Add apps to Exchange
# Step 11: Upload files to SharePoint Library
# Step 12: Creating Site Collection(s)
# Step 13: Provisioning Web dashboard
# Step 14: Update site collection view with field(s)
# Step 15: Creating source in event viewer
#
# Any changes in these steps, kindly update this list. Also update the checkpoint in Revert script
#----------------------------------------------
@ -397,57 +395,36 @@ if($IsValid -eq $true)
#----------------------------------------------
# Update App files for SharePoint and OneDrive Ribbon Apps
#----------------------------------------------
Show-Message -Message "Step 8: Update App files for SharePoint and OneDrive Ribbon Apps"
. "$ScriptDirectory\UpdateAppPackage.ps1" -IsDeployedOnAzure $IsDeployedOnAzure -Credentials $SPCredential
If ((Get-Content $ErrorLogFile) -ne $Null) {
Show-Message -Message "Updating App files for SharePoint and OneDrive Ribbon Apps failed" -Type ([MessageType]::Failure)
RevertAll $ScriptDirectory 3 #Revert from step 3 to 1
return
}
else {
Show-Message -Message "Completed updating App files for SharePoint and OneDrive Ribbon Apps" -Type ([MessageType]::Success)
}
# Show-Message -Message "Step 8: Update App files for SharePoint and OneDrive Ribbon Apps"
# . "$ScriptDirectory\UpdateAppPackage.ps1" -IsDeployedOnAzure $IsDeployedOnAzure -Credentials $SPCredential
#
# If ((Get-Content $ErrorLogFile) -ne $Null) {
# Show-Message -Message "Updating App files for SharePoint and OneDrive Ribbon Apps failed" -Type ([MessageType]::Failure)
# RevertAll $ScriptDirectory 3 #Revert from step 3 to 1
# return
# }
# else {
# Show-Message -Message "Completed updating App files for SharePoint and OneDrive Ribbon Apps" -Type ([MessageType]::Success)
# }
#----------------------------------------------
# Encrypt the appSettings section in web.config
#----------------------------------------------
Show-Message -Message "Step 9: Encrypting the config files"
Show-Message -Message "Step 8: Encrypting the config files"
. "$ScriptDirectory\EncryptDecrypt.ps1" -ToEncrypt: $true -ErrorLogPath: $ErrorLogFile
If ((Get-Content $ErrorLogFile) -ne $Null) {
Show-Message -Message "Encryption failed..." -Type ([MessageType]::Failure)
RevertAll $ScriptDirectory 9
RevertAll $ScriptDirectory 8
return
}
else {
Show-Message -Message "Config files encrypted successfully..." -Type ([MessageType]::Success)
}
#----------------------------------------------
# Publish websites
#----------------------------------------------
Show-Message -Message "Step 10: Publishing files to Azure/IIS"
$IsOnAzure = (Read-FromExcel $ExcelFilePath "Config" ("IsDeployedOnAzure") $ErrorLogFile)
if($IsOnAzure[0])
{
. "$ScriptDirectory\PublishOnAzure.ps1"
If ((Get-Content $ErrorLogFile) -ne $Null) {
Show-Message -Message "Publishing files to Azure or creating Azure Redis cache failed" -Type ([MessageType]::Failure)
RevertAll $ScriptDirectory 9
return
}
}
else {
. "$ScriptDirectory\PublishInIIS.ps1"
If ((Get-Content $ErrorLogFile) -ne $Null) {
Show-Message -Message "Publishing files to IIS failed" -Type ([MessageType]::Failure)
}
}
#----------------------------------------------
# Add Apps to SharePoint and Office
#----------------------------------------------
Show-Message -Message "Step 11: Add and install apps to SharePoint and Office"
Show-Message -Message "Step 9: Add and install apps to SharePoint and Office"
. "$ScriptDirectory\AppInstall.ps1" -IsDeploy: $false
. "$ScriptDirectory\DeployOfficeApp.ps1" -IsDeploy: $true -IsOfficeApp: $false
. "$ScriptDirectory\DeployOfficeApp.ps1" -IsDeploy: $true -IsOfficeApp: $true
@ -455,7 +432,7 @@ if($IsValid -eq $true)
If ((Get-Content $ErrorLogFile) -ne $Null) {
Show-Message -Message "Adding and installing apps to SharePoint and Office failed" -Type ([MessageType]::Failure)
RevertAll $ScriptDirectory 11
RevertAll $ScriptDirectory 9
return
}
else {
@ -466,12 +443,12 @@ if($IsValid -eq $true)
#----------------------------------------------
# Add Apps to Exchange
#----------------------------------------------
Show-Message -Message "Step 12: Add apps to Exchange"
Show-Message -Message "Step 10: Add apps to Exchange"
. "$ScriptDirectory\DeployOutlookApp.ps1" -IsDeploy: $true
If ((Get-Content $ErrorLogFile) -ne $Null) {
Show-Message -Message "Adding apps to Exchange failed" -Type ([MessageType]::Failure)
RevertAll $ScriptDirectory 12
RevertAll $ScriptDirectory 10
return
}
else {
@ -481,13 +458,13 @@ if($IsValid -eq $true)
#---------------------------------------------------------------------
# Upload files required for Matter landing page to SharePoint library
#---------------------------------------------------------------------
Show-Message -Message "Step 13: Upload files to SharePoint Library"
Show-Message -Message "Step 11: Upload files to SharePoint Library"
[Environment]::CurrentDirectory = Get-Location
& "$HelperPath\Microsoft.Legal.MatterCenter.UploadFile.exe" "true" $Username $Password
If ((Get-Content $ErrorLogFile) -ne $Null) {
Show-Message -Message "Uploading files to SharePoint Library failed" -Type ([MessageType]::Failure)
RevertAll $ScriptDirectory 13
RevertAll $ScriptDirectory 11
return
}
else {
@ -508,7 +485,7 @@ if($IsValid -eq $true)
}
}
Show-Message -Message "Step 14: Creating Site Collection(s)"
Show-Message -Message "Step 12: Creating Site Collection(s)"
. "$ScriptDirectory\CreateSiteCollection.ps1" -IsDeployedOnAzure: $IsDeployedOnAzure -Username: $Username -Password $Password
If ((Get-Content $ErrorLogFile) -ne $Null) {
Show-Message -Message "Creating site collection failed" -Type ([MessageType]::Failure)
@ -520,7 +497,7 @@ if($IsValid -eq $true)
#---------------------------------------------------------------------
# Provisioning Web Dashboard page(s) on SharePoint library
#---------------------------------------------------------------------
Show-Message -Message "Step 15: Provisioning Web dashboard"
Show-Message -Message "Step 13: Provisioning Web dashboard"
& "$HelperPath\Microsoft.Legal.MatterCenter.ProvisionWebDashboard.exe" "true" $Username $Password
If ((Get-Content $ErrorLogFile) -ne $Null) {
@ -533,13 +510,13 @@ if($IsValid -eq $true)
#---------------------------------------------------------------------
# Update site pages view with fields
#---------------------------------------------------------------------
Show-Message -Message "Step 16: Update site collection view with fields"
Show-Message -Message "Step 14: Update site collection view with fields"
& "$HelperPath\Microsoft.Legal.MatterCenter.UpdateView.exe" $Username $Password
#---------------------------------------------------------------------
# Creating source in event viewer
#---------------------------------------------------------------------
Show-Message -Message "Step 17: Creating source in event viewer"
Show-Message -Message "Step 15: Creating source in event viewer"
if(-not $IsDeployedOnAzure)
{
$logFileExists = Get-EventLog -list | Where-Object {$_.logdisplayname -eq $Log}

Просмотреть файл

@ -1,96 +0,0 @@
# This script is used to publish UI and Service to IIS
# Get the current directory of the script
Function ScriptRoot {Split-Path $MyInvocation.ScriptName}
$ScriptDirectory = (ScriptRoot)
# Get the parent directory of the script
Function Get-ParentDirectory {Split-Path -Parent(Split-Path $MyInvocation.ScriptName)}
$ParentDirectory = (Get-ParentDirectory)
# Function is used to publish files to IIS
Function Publish-Files()
{
param(
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string] $SourcePath
,[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string] $DestinationPath
)
Show-Message -Message "Copying all files from $SourcePath to $DestinationPath"
# Copy files after checking whether source and destination folders exist
if((Check-Existance -Path $SourcePath) -and (Check-Existance -Path $DestinationPath))
{
Get-Childitem "$SourcePath" | % {
copy-item $_.FullName -Destination "$DestinationPath\$_" -Recurse -Force
}
return $true;
}
else
{
Write-Log ($ErrorLogFile) "Either the Source Path or the Destination Path is invalid"
return $false;
}
}
# Function is used to check whether provided path exists or not
Function Check-Existance()
{
param(
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string] $Path
)
return Test-Path $path
}
#Set Excel file path, uncomment below line if you want to use this script separately
#$ExcelFilePath = "$ParentDirectory\MCDeploymentConfig.xlsx"
# Set log file path, uncomment below line if you want to use this script separately
#$ErrorLogFile = "$ScriptDirectory\Logs\ErrorLog.txt"
Show-Message -Message "Reading parameters from Excel file..."
$ExcelValues = (Read-FromExcel $ExcelFilePath "Config" ("UIPublishLocation", "ServicePublishLocation", "IsDeployedOnAzure") ($ErrorLogFile))
$ExcelValues = $ExcelValues.Split(";")
if($ExcelValues.length -le 0)
{
Write-Log $ErrorLogFile "Error reading values from Excel file. Aborting!"
return $false
}
$UIPublishLocation = $ExcelValues[0]
$ServicePublishLocation = $ExcelValues[1]
$IsValid = $false
# If IsDeployedOnAzure parameter is false then proceed with publish activity else do nothing
if ("false" -eq $ExcelValues[2].ToLowerInvariant())
{
Show-Message -Message "Publishing files to IIS"
$IsValid = Publish-Files -SourcePath ($ParentDirectory + "\Service Publish") -DestinationPath $ServicePublishLocation
if(!($IsValid))
{
Write-Log ($ErrorLogFile) "Publish to $ServicePublishLocation failed"
return
}
$IsValid = Publish-Files -SourcePath ($ParentDirectory + "\Web Publish") -DestinationPath $UIPublishLocation
if(!($IsValid))
{
Write-Log ($ErrorLogFile) "Publish to $UIPublishLocation failed"
return
}
}
else
{
Show-Message -Message "Skipping publish step as the script is ran for Azure" -Type ([MessageType]::Warning)
}

Просмотреть файл

@ -1,211 +0,0 @@
# Get the current directory of the script
Function ScriptRoot {Split-Path $MyInvocation.ScriptName}
$ScriptDirectory = (ScriptRoot)
# Get the parent directory of the script
Function Get-ParentDirectory {Split-Path -Parent(Split-Path $MyInvocation.ScriptName)}
$ParentDirectory = (Get-ParentDirectory)
#Set Excel file path, uncomment below line if you want to use this script separately
$ExcelFilePath = "$ParentDirectory\MCDeploymentConfig.xlsx"
# Set log file path, uncomment below line if you want to use this script separately
$ErrorLogFile = "$ScriptDirectory\Logs\ErrorLog.txt"
# Set revert log file path
$RevertLogFile = "$ScriptDirectory\Logs\RevertLog.txt"
# Set helper utilities folder path
$HelperPath = "$ScriptDirectory\Helper Utilities"
$Path = (get-item $ScriptDirectory ).parent
$ServicePackagePath = "$ParentDirectory\Service Publish"
$WebsitePackagePath = "$ParentDirectory\Web Publish"
$ExcelValues = (Read-FromExcel $ExcelFilePath "Config" ("AzureWebsiteName", "AzureWebServiceName", "TenantURL")($ErrorLogFile))
$ExcelValues = $ExcelValues.Split(";")
# Create GUID to be used for Encryption Key
$Guid = [guid]::NewGuid().ToString().ToUpperInvariant()
# Variable for Azure properties
$AzureProperties = $null
#Variable for Azure cache properties
$MatterCenterCache = $null
# Global variables with default values
[string]$CacheName = "MatterCenterCache"
[string]$CacheLocation = "West US"
[string]$ResourceGroupName = "Default-Web-WestUS"
# Publish site on Azure and update the configurations
Function Publish-SiteOnAzure
{
Show-Message -Message "Publishing web service on Azure"
Publish-AzureWebsiteProject -Name $ExcelValues[1] -Package $ServicePackagePath
Show-Message -Message "Publishing web site on Azure"
Publish-AzureWebsiteProject -Name $ExcelValues[0] -Package $WebsitePackagePath
Show-Message -Message "Updating App settings for website"
$Website = Get-AzureWebsite -Name $ExcelValues[0]
$Website.AppSettings["Old_Encryption_Key"]= $Guid
$Website.AppSettings["Encryption_Key"]= $Guid
Set-AzureWebsite -Name $ExcelValues[0] -AppSettings $Website.AppSettings
Show-Message -Message "Updating App settings for web service"
$WebService = Get-AzureWebsite -Name $ExcelValues[1]
# Accept MailCart username and Password
if($null -eq $ExchangeCredential) {
$ExchangeCredential = Get-Credential -Message "Enter credentials to connect with Exchange server."
}
$WebService.AppSettings["Mail_Cart_Mail_User_Name"]= $ExchangeCredential.UserName
$WebService.AppSettings["Mail_Cart_Mail_Password"]= $ExchangeCredential.GetNetworkCredential().Password
$WebService.AppSettings["Old_Encryption_Key"]= $Guid
$WebService.AppSettings["Encryption_Key"]= $Guid
Set-AzureWebsite -Name $ExcelValues[1] -AppSettings $WebService.AppSettings
}
# Get the azure properties of the website
Function Get-AzureWebsiteProperties
{
$AzureProperties = Get-AzureRmResource |
Where-Object { $_.ResourceType -like '*site*' -and $_.Name -like $ExcelValues[1] } | `
Select-Object ResourceGroupName, Location
# Return the azure properties
return $AzureProperties
}
# Create redis cache
Function Create-RedisCache
{
param (
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String] $CacheLocation,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String] $ResourceGroupName,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String] $CacheName
)
#Check if redis cache group already exists
$IsCacheExist = $null
$CacheInfo = $null
try
{
$ResourceGroups = Get-AzureRmResourceGroup
Foreach ($ResourceGroup IN $ResourceGroups)
{
# Check redis cache is already exists
$IsCacheExist = Find-AzureRmResource -ResourceGroupNameContains $ResourceGroup.ResourceGroupName -ResourceNameContains $CacheName -Top 1 -ErrorAction SilentlyContinue
if($null -ne $IsCacheExist)
{
$CacheInfo = Get-AzureRmRedisCache -ResourceGroupName $ResourceGroup.ResourceGroupName -Name $CacheName -ErrorAction SilentlyContinue
$CacheExist = $true
}
}
if(!$CacheExist)
{
Show-Message -Message "Matter Center Redis cache doesn't exist, creating redis cache for Matter Center"
# Create a new cache.
$CacheInfo = New-AzureRmRedisCache -Location $CacheLocation -Name $CacheName -ResourceGroupName $ResourceGroupName -Size 250MB -Sku Basic
Show-Message -Message "Redis cache is in process of creation, it will take sometime to complete! Continuing with the rest of the process" -Type ([MessageType]::Success)
Show-Message -Message "Primary Key: $($CacheInfo.PrimaryKey)"
Show-Message -Message "Host name: $($CacheInfo.HostName)"
}
else
{
Write-Output "Matter Center Redis cache already exists, hence skipping the process!"
}
#Return the cache details
return $CacheInfo
}
catch
{
$ErrorMessage = $Error[0].Exception.Error.Message
Write-Log $ErrorLogFile $ErrorMessage
return $null
}
}
# First Phase : Resource Configuration
Show-Message -Message "Please enter your Azure credentials for Azure Resource Management"
if(Login-AzureRmAccount)
{
try{
$AzureProperties = Get-AzureWebsiteProperties
# Check if azure properties are not null and set it as per the service location
if($AzureProperties -ne $null)
{
$CacheLocation = $AzureProperties.Location
$ResourceGroupName = $AzureProperties.ResourceGroupName
}
Show-Message -Message "Creating Redis cache"
# Call the function to create redis cache
$cacheName = ($ExcelValues[2] -split '//')[1].Split('.')[0] + $CacheName
$MatterCenterCache= Create-RedisCache $CacheLocation $ResourceGroupName $CacheName
}
catch{
$ErrorMessage = $Error[0].Exception.ErrorRecord.Exception.Message
Write-Log $ErrorLogFile $ErrorMessage
return $false
}
}
else{
return
}
# Second phase: Service Configuration and deployment
Show-Message -Message "Please enter your Azure credentials for Azure service management"
if(Add-AzureAccount)
{
try
{
# Call azure publish for site and service
Publish-SiteOnAzure
# Update the service appsettings with Primary key and host name of cache
if($MatterCenterCache -ne $null)
{
Write-Output "Updating the service appsettings with Primary key and host name of cache"
Show-Message -Message "Updating App settings for web service"
$WebService = Get-AzureWebsite -Name $ExcelValues[1]
$WebService.AppSettings["Cache_Primary_Key"]= $MatterCenterCache.PrimaryKey
$WebService.AppSettings["Cache_Host_Name"]= $MatterCenterCache.HostName
Set-AzureWebsite -Name $ExcelValues[1] -AppSettings $WebService.AppSettings
}
else
{
return $false
}
}
catch
{
$ErrorMessage = $Error[0].Exception.ErrorRecord.Exception.Message
Write-Log $ErrorLogFile $ErrorMessage
return $false
}
}
else {
return
}

Просмотреть файл

@ -74,9 +74,9 @@ Show-Message -Message "Adding common library functions" -Type ([MessageType]::Wa
Show-Message -Message "Added common library functions" -Type ([MessageType]::Success)
#----------------------------------------------
# Reverting step 13
# Reverting step 11
#----------------------------------------------
if (13 -le $Checkpoint)
if (11 -le $Checkpoint)
{
Show-Message -Message ""
Show-Message -Message "Deleting files from SharePoint library"
@ -89,9 +89,9 @@ if (13 -le $Checkpoint)
}
#----------------------------------------------
# Reverting step 12
# Reverting step 10
#----------------------------------------------
if (12 -le $Checkpoint)
if (10 -le $Checkpoint)
{
Show-Message -Message ""
Show-Message -Message "Removing apps from Exchange"
@ -104,9 +104,9 @@ if (12 -le $Checkpoint)
}
#----------------------------------------------
# Reverting step 11
# Reverting step 9
#----------------------------------------------
if (11 -le $Checkpoint)
if (9 -le $Checkpoint)
{
Show-Message -Message ""
Show-Message -Message "Removing apps from SharePoint and Office"
@ -121,9 +121,9 @@ if (11 -le $Checkpoint)
}
#----------------------------------------------
# Reverting Step 9
# Reverting Step 8
#----------------------------------------------
if (9 -le $Checkpoint)
if (8 -le $Checkpoint)
{
Show-Message -Message ""
Show-Message -Message "Undoing Encryption"

Просмотреть файл

@ -1,180 +0,0 @@
# Script to update the App package with configurations
param
(
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[bool] $IsDeployedOnAzure,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential] $Credentials
)
# Function to get the parent Content Type ID
function GetContentTypeID(){
param
(
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[bool] $IsDeployedOnAzure,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential] $Credentials
)
Show-Message -Message "Getting parent Content Type ID" -Type ([MessageType]::Success)
$contentTypeName = "MatterCenter"
$contentTypeGroup = "_MatterCenter"
try {
$clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($ContentTypeHubURL)
if($IsDeployedOnAzure){
$credential = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Credentials.UserName, $Credentials.Password)
} else {
$credential = New-Object System.Net.NetworkCredential($Credentials.UserName, $Credentials.Password)
}
$clientContext.Credentials = $credential
# Retrieve the ID for parent Content Type
$web = $clientContext.Web
$contentTypeCollection = $web.ContentTypes
$clientContext.Load($contentTypeCollection)
$clientContext.ExecuteQuery()
$parentContentType = $contentTypeCollection | Where-Object {$_.Group -eq $contentTypeGroup -and $_.Name -eq $contentTypeName}
$parentContentTypeId = $parentContentType.Id.StringValue
Show-Message -Message "Parent Content Type ID retrieved" -Type ([MessageType]::Success)
} catch [Exception]
{
$parentContentTypeId = ""
Show-Message -Message "Failed to get the parent Content Type ID" -Type ([MessageType]::Failure)
Write-Log $ErrorLogFile $_.Exception.ToString()
}
return $parentContentTypeId
}
# Function to update AppManifest.xml, Elements.xml and Feature.xml files present inside the App package
function UpdateAppFile(){
param
(
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string] $appPackagePath,
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string] $parentContentTypeId
)
$fileName = Split-Path -Path $appPackagePath -Leaf
$appManifestFile = "/AppManifest.xml"
$elementsString = "/elements"
$featureString = "/feature"
$pages = "/pages/"
$sendToOneDrive = "Send To OneDrive"
$newProdID = [guid]::NewGuid().ToString()
$newFeatureID = [guid]::NewGuid().ToString()
try
{
$package = [System.IO.Packaging.Package]::Open($appPackagePath, [System.IO.FileMode]::Open)
$manifestUri = New-Object System.Uri($appManifestFile, [System.UriKind]::Relative)
$appManifestPartNameUri = [System.IO.Packaging.PackUriHelper]::CreatePartUri($manifestUri)
$appManifestPart = $package.GetPart($appManifestPartNameUri)
$appManifestPartStream = $appManifestPart.GetStream()
$reader = New-Object -Type System.IO.StreamReader -ArgumentList $appManifestPartStream
$content = $reader.ReadToEnd()
$xml = [xml] $content
if($xml.App.ProductID)
{
$xml.App.ProductID = "{" + $newProdID + "}"
}
if($xml.App.Properties.StartPage -and -1 -lt $xml.App.Properties.StartPage.ToLowerInvariant().IndexOf($pages))
{
$previousURL = $xml.App.Properties.StartPage
$xml.App.Properties.StartPage = $SiteUrl + $previousURL.Substring($previousURL.ToLowerInvariant().IndexOf($pages))
}
if($xml.App.AppPrincipal.RemoteWebApplication.ClientId)
{
$xml.App.AppPrincipal.RemoteWebApplication.ClientId = $ClientID
}
$appManifestPartStream.Position = 0
$appManifestPartStream.SetLength(0)
$writer = New-Object -TypeName System.IO.StreamWriter -ArgumentList $appManifestPartStream
$writer.Write($xml.InnerXml)
$writer.Flush()
$parts = $package.GetParts()
foreach ($part in $parts){
$partNameUri = $part.Uri.OriginalString
if($partNameUri -match $elementsString -or $partNameUri -match $featureString){
$partStream = $part.GetStream()
$partReader = New-Object -Type System.IO.StreamReader -ArgumentList $partStream
$partContent = $partReader.ReadToEnd()
$partXml = [xml] $partContent
if($partNameUri -match $elementsString){
# Update Elements.xml for SharePoint App
if($partXml.Elements.CustomAction.UrlAction.Url -and -1 -lt $partXml.Elements.CustomAction.UrlAction.Url.ToLowerInvariant().IndexOf($pages)){
$previousURL = $partXml.Elements.CustomAction.UrlAction.Url
$partXml.Elements.CustomAction.UrlAction.Url = $SiteUrl + $previousURL.Substring($previousURL.ToLowerInvariant().IndexOf($pages))
}
if($sendToOneDrive -eq $partXml.Elements.CustomAction.Title -and "" -ne $parentContentTypeId){
$partXml.Elements.CustomAction.RegistrationId = $parentContentTypeId
}
# Update Elements.xml for OneDrive Ribbon App
if($partXml.Elements.CustomAction.CommandUIExtension.CommandUIHandlers.CommandUIHandler.CommandAction -and 0 -lt $partXml.Elements.CustomAction.CommandUIExtension.CommandUIHandlers.CommandUIHandler.CommandAction.Count){
foreach ($item in $partXml.Elements.CustomAction.CommandUIExtension.CommandUIHandlers.ChildNodes){
$previousURL = $item.CommandAction
$item.CommandAction = $SiteUrl + $previousURL.Substring($previousURL.ToLowerInvariant().IndexOf($pages))
}
}
} elseif($partNameUri -match $featureString){
# Update Feature.xml for the App
if($partXml.Feature.Id){
$partXml.Feature.Id = "{" + $newFeatureID.ToLowerInvariant() + "}"
}
}
$partStream.Position = 0
$partStream.SetLength(0)
$partWriter = New-Object -TypeName System.IO.StreamWriter -ArgumentList $partStream
$partWriter.Write($partXml.InnerXml)
$partWriter.Flush()
}
}
$package.Close()
Show-Message -Message "Updated the $fileName package" -Type ([MessageType]::Success)
} catch [Exception]
{
$parentContentTypeId = " "
Show-Message -Message "Failed to update the $fileName package" -Type ([MessageType]::Failure)
Write-Log $ErrorLogFile $_.Exception.ToString()
}
}
$Configurations = (Read-FromExcel $ExcelFilePath "Config" ("ContentTypeHubURL", "UISiteURL", "ClientID") $ErrorLogFile)
$Configurations = $Configurations.Split(";")
if (3 -eq $Configurations.Count){
$ContentTypeHubURL = $Configurations[0]
$SiteUrl = $Configurations[1]
$ClientID = $Configurations[2]
$UtilityFolder = "\Helper Utilities\"
$SharePointAppFolder = "\SharePoint App\"
Add-Type -Path (Get-ChildItem ((Get-Item $ScriptDirectory).FullName + $UtilityFolder + "WindowsBase.dll"))
$SharePointAppPath = (Get-Item $ScriptDirectory).Parent.FullName + $SharePointAppFolder + "Microsoft.Legal.MatterCenter.app"
$RibbonAppPath = (Get-Item $ScriptDirectory).Parent.FullName + $SharePointAppFolder + "Microsoft.Legal.MatterCenter.OneDriveRibbon.app"
# Get the parent Content Type ID
$ParentContentTypeId = GetContentTypeID -IsDeployedOnAzure $IsDeployedOnAzure -Credentials $Credentials
# Update SharePoint App
UpdateAppFile -appPackagePath $SharePointAppPath -parentContentTypeId $ParentContentTypeId
# Update OneDrive Ribbon App
if(Test-Path $RibbonAppPath) {
UpdateAppFile -appPackagePath $RibbonAppPath -parentContentTypeId $ParentContentTypeId
}
} else{
$ErrorMessage = "Incorrect configuration retrieved while updating App packages"
Show-Message -Message $ErrorMessage -Type ([MessageType]::Failure)
Write-Log $ErrorMessage
}

Просмотреть файл

@ -72,7 +72,7 @@
}, "sp.js");
function preLoad() {
var iFrameUrl = "SETTINGS_PAGE_URL", queryString = "";
var iFrameUrl = "SETTINGS_PAGE_URL/#/settings", queryString = "";
if ("/" !== _spPageContextInfo.siteServerRelativeUrl) {
queryString = "&clientdetails=" + _spPageContextInfo.webAbsoluteUrl + "$|$" + _spPageContextInfo.webTitle;
iFrameUrl += "?" + encodeURIComponent(queryString);

Просмотреть файл

@ -109,7 +109,12 @@
if (sSectionID) {
sQueryString = sQuestionMarkChar + sSection + sEqualChar + sSectionID + sAmpersandChar;
}
oWebDashboardSPGlobal.iFrame.src = "WEB_DASHBOARD_PAGE_URL" + sQueryString;
if(sSectionID==="1"){
oWebDashboardSPGlobal.iFrame.src = "WEB_DASHBOARD_PAGE_URL/#/matterdashboard";
}
else{
oWebDashboardSPGlobal.iFrame.src = "WEB_DASHBOARD_PAGE_URL/#/documentdashboard";
}
});
// Dynamically update height of iFrame
(function () {

Просмотреть файл

@ -3,7 +3,7 @@
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Document Details</title>
<title id="tabTitle"></title>
<link rel="stylesheet" type="text/css" href="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Common%20Assets/Styles/spCommon.css?ver=21.0.0.0" />
<link rel="stylesheet" type="text/css" href="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Styles/documentDetails.css?ver=20.0.0.0" />
</head>
@ -18,7 +18,7 @@
<div id="expandCollapse">
<span class="inlineElement" id="expandMessage">+</span>
<span id="collapseMessage" class="inlineElement hide">-</span>
<span>Click here for details</span>
<span id="collapseMessageDetails"></span>
</div>
<div class="clear"></div>
<span id="errorMessage" class="hide ellipsis"></span>
@ -30,52 +30,53 @@
<div id="leftSection">
<div id="actionBarMainContainer">
<span class="loadingImageContainer actionChild" id="loadingActionBar"><img class="loadingImage" alt="Loading" title="Loading..." src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/WindowsLoadingFast.GIF" /></span>
<span id="documentName" class="actionChild hide ellipsis">File Name: <span id="documentTitle"></span></span>
<div id="gotoAllDocuments" class="actionChild hide" title="Go to all documents"><a>Go to all documents</a></div>
<span id="documentName" class="actionChild hide ellipsis"><span id="spanDocumentName"><span id="documentTitle"></span></span>
<div id="gotoAllDocuments" class="actionChild hide" ><a id="linkGoToAllDocument">
</a></div>
<div id="actionBar" class="actionChild hide">
<span class="documentAction" id="openDocument" title="Open">
<span class="documentAction" id="openDocument" >
<a>
<img alt="Open" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Open_Icon_30px_x_30px.png" />
<span class="actionText">open</span>
<span class="actionText" id="spanOpenDownload"></span>
</a>
</span>
<span class="documentAction" id="download" title="Download">
<span class="documentAction" id="download">
<a>
<img alt="Download" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Download_Icon_30px_x_30px.png" />
<span class="actionText">download</span>
<span class="actionText" id="spanDownload"></span>
</a>
</span>
<span class="documentAction" id="shareDocument" title="Share">
<span class="documentAction" id="shareDocument">
<img alt="Share" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Share_Icon_30px_x_30px.png" />
<span class="actionText">share</span>
<span class="actionText" id="spanShare"></span>
</span>
<span class="documentAction" id="checkInOut">
<span id="checkInDocument" title="Check in">
<span id="checkInDocument">
<img alt="Check in" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Check_in_Icon_30px_x_30px.png" />
<span class="actionText">check in</span>
<span class="actionText" id="spanCheckin"></span>
</span>
<span id="checkOutDocument" class="hide" title="Check out">
<span id="checkOutDocument" class="hide">
<img id="checkOutLoading" class="loadingImage hide" alt="Loading" title="Loading..." src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/loading_circles_30px_X_30px_white.gif" />
<img alt="Check out" id="checkOutImage" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Check_Out_Icon_30px_x_30px.png" />
<span class="actionText">check out</span>
<span class="actionText" id="spanCheckOut"></span>
</span>
</span>
<span class="documentAction" id="sendLink" title="Send as link">
<span class="documentAction" id="sendLink">
<img alt="Send as link" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Send_Link_Icon_30px_x_30px.png" />
<span class="actionText">send link</span>
<span class="actionText" id="spanSendLink" ></span>
</span>
<span class="documentAction" id="sendToOneDrive" title="Send to OneDrive">
<span class="documentAction" id="sendToOneDrive">
<img alt="OneDrive" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_OneDrive_Icon_30px_x_30px.png" />
<span class="actionText">OneDrive</span>
<span class="actionText" id="spanOneDrive" ></span>
</span>
<span class="documentAction" id="pinUnpinDocument" title="Pin">
<span class="documentAction" id="pinUnpinDocument">
<span id="pinDocument">
<img alt="Pin" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Pin_Icon_30px_x_30px.png" />
<span class="actionText">pin</span>
<span class="actionText" id="spanPin" ></span>
</span>
<span id="unpinDocument" class="hide" title="Unpin">
<span id="unpinDocument" class="hide">
<img alt="Unpin" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Unpin_Icon_30px_x_30px.png" />
<span class="actionText">unpin</span>
<span class="actionText" id="spanUnpin" ></span>
</span>
</span>
</div>
@ -85,8 +86,8 @@
<iframe class="hide" name="documentPreviewSource" id="documentPreviewSource"></iframe>
<div id="documentPreviewNotSupported" class="hide">
<span class="previewContainer">
<img class="previewImage" alt="Preview not supported" title="Preview not supported..." src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landingpage_No-Preview_Icon_120px_x_90px.png" />
<span id="previewUnsupportedText">There is no preview for this document</span>
<img class="previewImage" id="imgNoPreview" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landingpage_No-Preview_Icon_120px_x_90px.png" />
<span id="previewUnsupportedText"></span>
</span>
</div>
</div>
@ -98,18 +99,24 @@
<img class="hide toggleFileSection" id="OpenFileProperties" alt="Open" title="Open" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Glyph_Open.png" />
<img class="toggleFileSection" id="CloseFileProperties" alt="Close" title="Close" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Glyph_Close.png" />
<span id="filePropertiesTitle">File Properties</span>
<span class="viewMoreSection" title="View more"><a id="viewMoreFileProperties">View more</a></span>
<span class="viewMoreSection" id="viewMoreVersions"></span>
</div>
<div class="separtor"></div>
<ul id="metadataProperties">
<li><span class="loadingImageContainer" id="loadingFileProperties"><img class="loadingImage" alt="Loading" title="Loading..." src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/WindowsLoadingFast.GIF" /></span></li>
<li class="hide"><span class="propertyName ellipsis" title="File title">File title:</span><span class="propertyValue ellipsis" id="fileTitleValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="Client">Client:</span><span class="propertyValue ellipsis" id="clientValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="Matter">Matter:</span><span class="propertyValue ellipsis" id="matterValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="Client.MatterID">Client.MatterID:</span><span class="propertyValue ellipsis" id="clientMatterIdValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="Document ID">Document ID:</span><span class="propertyValue ellipsis" id="documentIdValue"></span></li>
<li class="hide">
<span class="propertyName ellipsis" title="Checked out to">Checked out to:</span>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column1" >
</span><span class="propertyValue ellipsis" id="fileTitleValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column2" >
</span><span class="propertyValue ellipsis" id="clientValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column3" >
</span><span class="propertyValue ellipsis" id="matterValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column4" >
</span><span class="propertyValue ellipsis" id="clientMatterIdValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column5" >
</span><span class="propertyValue ellipsis" id="documentIdValue"></span></li>
<li class="hide">
<span class="propertyName ellipsis" id="Section1Column6" >
</span>
<span id="checkOutLyncIndicator">
<span class="ms-verticalAlignTop ms-noWrap">
<span class="ms-imnSpan">
@ -124,7 +131,8 @@
<span class="propertyValue ellipsis" id="checkOutUserValue"></span>
</li>
<li class="hide">
<span class="propertyName ellipsis" title="Author">Author:</span>
<span class="propertyName ellipsis" id="Section1Column7" >
</span>
<span id="authorLyncIndicator">
<span class="ms-verticalAlignTop ms-noWrap">
<span class="ms-imnSpan">
@ -138,26 +146,35 @@
</span>
<span class="propertyValue ellipsis" id="authorValue"></span>
</li>
<li class="hide"><span class="propertyName ellipsis" title="Date created">Date created:</span><span class="propertyValue ellipsis" id="dateCreatedValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="Practice group">Practice group:</span><span class="propertyValue ellipsis" id="practiceGroupValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="Area of law">Area of law:</span><span class="propertyValue ellipsis" id="areaOfLawValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="Sub area of law">Sub area of law:</span><span class="propertyValue ellipsis" id="subAreaOfLaw"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="File type">File type:</span><span class="propertyValue ellipsis" id="fileTypeValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="File size">File size:</span><span class="propertyValue ellipsis" id="fileSizeValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" title="File access">File access:</span><a class="propertyValue ellipsis" id="accessValue" title="View shared properties"></a></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column8">
</span><span class="propertyValue ellipsis" id="dateCreatedValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column9">
</span><span class="propertyValue ellipsis" id="practiceGroupValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column10">
</span><span class="propertyValue ellipsis" id="areaOfLawValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column11">
</span><span class="propertyValue ellipsis" id="subAreaOfLaw"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column12">
</span><span class="propertyValue ellipsis" id="fileTypeValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column13">
</span><span class="propertyValue ellipsis" id="fileSizeValue"></span></li>
<li class="hide"><span class="propertyName ellipsis" id="Section1Column14">
</span><a class="propertyValue ellipsis" id="accessValue" title="View shared properties"></a></li>
</ul>
</div>
<div id="metadataVersion">
<div class="viewMoreContainer">
<img class="hide toggleVersionSection" id="OpenVersionHistory" alt="Open" title="Open" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Glyph_Open.png" />
<img class="toggleVersionSection" id="CloseVersionHistory" alt="Close" title="Close" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/MC_Documents_Landing_Page_Glyph_Close.png" />
<span id="versionHistoryTitle">Version history</span>
<span class="viewMoreSection" id="viewMoreVersions" title="View more">View more</span>
<span id="versionHistoryTitle" id="Section2Header"></span>
<span class="viewMoreSection" id="viewMoreVersions"></span>
</div>
<div class="separtor"></div>
<div id="documentMetadataContainer">
<div id="versionHeader" class="hide">
<span class="versionHeaders">Version</span><span class="versionHeaders">Modified</span><span class="versionHeaders">Modified By</span>
<span class="versionHeaders" id="Section2Column1"></span>
<span class="versionHeaders" id="Section2Column2"></span>
<span class="versionHeaders" id="Section2Column3"></span>
</div>
<ul id="documentMetadata">
<li><span class="loadingImageContainer" id="loadingVersion"><img class="loadingImage" alt="Loading" title="Loading..." src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Images/WindowsLoadingFast.GIF" /></span></li>
@ -170,6 +187,7 @@
</div>
<script type="text/javascript" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Common%20Assets/Scripts/jquery-1.11.1.min.js?ver=20.0.0.0"></script>
<script type="text/javascript" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Common%20Assets/Scripts/spCommon.js?ver=20.0.0.0"></script>
<script type="text/javascript" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Common%20Assets/Scripts/uiconfigforspo.js"></script>
<script type="text/javascript" src="CATALOG_SITE_URL/SiteAssets/Matter%20Center%20Assets/Document%20Landing%20Assets/Scripts/documentDetails.js?ver=20.0.0.0"></script>
</body>
</html>

Просмотреть файл

@ -0,0 +1,77 @@
var uiconfigs =
{
"MatterLanding": {
"Label1Tab1HeaderText": "Matter Profile",
"Label2Tab2HeaderText": "Matter Description",
"Label3Tab1Column1Text": "Client Name",
"Label4Tab1Column2Text": "Client & Matter ID",
"Label5Tab1Column3Text": "Practice Group",
"Label6Tab1Column4Text": "Area of Law",
"Label7Tab1Column5Text": "Responsible Attorney",
"Label8Tab1Section2HeaderText": "Matter Library",
"MenuImageUpperCaption": "Matter Center",
"MenuImageLowerCaption": "for Office 365",
"Menu1Option1Text": "Matters",
"Menu1Option2Text": "Documents",
"Menu1Option3Text": "Settings",
"ErrMsg1NoTask": "There are no tasks created",
"ErrMsg2FetchTask": "Error occurred while trying to fetch tasks",
"ErrMsg3CreateEvent": "Error occurred while trying to fetch events",
"ErrMsg4ActiveEvents": "There are no active events",
"ErrMsg5NoMatterDescription": "There is no description for this matter",
"ErrMsg6ForPinUnpinMatters": "Error while trying to retrieve matter pin/unpin status",
"ErrMsg7MatterInformation": "Error while trying to retrieve matter information",
"ErrMsg8MatterDescription": "Error while trying to retrieve matter description",
"ErrMsg9NoPinUnpinMatter": "Error while trying to pin/unpin matter",
"Label1MenuText": "Matter Name",
"Label9Section1Text": "Matter Id",
"Label10Section1Text": "Client Id",
"Label11Section1Text": "Description",
"Label12ManageUserTitleText": "Manage users",
"Label13GotoOnnoteTitleText": "Go to Matter OneNote",
"Label14TaskeTitleText": "Task ",
"Label15CalenderTitleText": "Calendar Events",
"Label16RSSFeedTitleText": "Related News (RSS)",
"Label17EditTitleText": "View / Edit",
"Label18MenuText": "My Matters",
"Label19Section4Text": "Matter Library"
},
"DocumentDetails": {
"Label1HeaderText": "File Name",
"Label2Section2HeaderText": "File Properties",
"Label3Section2Column1Text": "File title",
"Label4Section2Column2Text": "Client",
"Label5Section2Column3Text": "Matter",
"Label6Section2Column4Text": "Client.MatterID",
"Label7Section2Column5Text": "Document ID",
"Label8Section2Column6Text": "Checked out to",
"Label9Section2Column7Text": "Author",
"Label10Section2Column8Text": "Date created",
"Label11Section2Column9Text": "Practice group",
"Label12Section2Column10Text": "Area of law:",
"Label13Section2Column11Text": "Sub area of law",
"Label14Section2Column12Text": "File type",
"Label15Section2Column13Text": "File size",
"Label16Section2Column14Text": "File access",
"Label17Section2HeaderText": "Version history",
"Label18Section2Column1Text": "Version",
"Label19Section2Column2Text": "Modified",
"Label20Section2Column3Text": "Modified By",
"Label21MenuHeaderOption1Text": "open",
"Label22MenuHeaderOption2Text": "download",
"Label23MenuHeaderOption3Text": "share",
"Label24MenuHeaderOption4Text": "check in",
"Label25MenuHeaderOption5Text": "check out",
"Label26MenuHeaderOption6Text": "send link",
"Label27MenuHeaderOption7Text": "pin",
"Label28MenuHeaderOption8Text": "unpin",
"Label1TabTitleText": "Document Details",
"Link1ErrorDetailsCaptionText": "Click here for details",
"Link2AllDocumentText": "Go to all documents",
"LabelNoPreviewText": "There is no preview for this document",
"ImgNoPreviewSuppoertText": "Preview not supported...",
"Link3ViewMoreText": "View More",
"Label135MenuHead" : "OneDrive",
"Label36MenuHeaderOption7Text" : "Send to OneDrive"
}
};

Просмотреть файл

@ -1157,6 +1157,77 @@ var oDocumentLandingObject = (function () {
return string.replace(new RegExp(oCommonFunctions.escapeRegExp(find), "g"), replace);
};
oCommonFunctions.applyConfigSettings = function () {
$("#tabTitle").html(uiconfigs.DocumentDetails.Label1TabTitleText);
$("#collapseMessageDetails").html(uiconfigs.DocumentDetails.Link1ErrorDetailsCaptionText);
$("#gotoAllDocuments").attr("title",uiconfigs.DocumentDetails.Link2AllDocumentText);
$("#linkGoToAllDocument").html(uiconfigs.DocumentDetails.Link2AllDocumentText);
$("#previewUnsupportedText").html(uiconfigs.DocumentDetails.LabelNoPreviewText);
$("#imgNoPreview").attr("title",uiconfigs.DocumentDetails.ImgNoPreviewSuppoertText);
$("#spanViewMore").attr("title",uiconfigs.DocumentDetails.Link3ViewMoreText);
$("#viewMoreFileProperties").html(uiconfigs.DocumentDetails.Link3ViewMoreText);
$("#viewMoreVersions").attr("title",uiconfigs.DocumentDetails.Link3ViewMoreText);
$("#viewMoreVersions").html(uiconfigs.DocumentDetails.Link3ViewMoreText);
$("#spanDocumentName").html(uiconfigs.DocumentDetails.Label1HeaderText+ ":");
$("#filePropertiesTitle").html(uiconfigs.DocumentDetails.Label2Section2HeaderText);
$("#Section1Column1").html(uiconfigs.DocumentDetails.Label1HeaderText + ":");
$("#Section1Column1").attr("title",uiconfigs.DocumentDetails.Label1HeaderText);
$("#Section1Column2").html(uiconfigs.DocumentDetails.Label4Section2Column2Text+ ":");
$("#Section1Column2").attr("title",uiconfigs.DocumentDetails.Label4Section2Column2Text);
$("#Section1Column3").html(uiconfigs.DocumentDetails.Label5Section2Column3Text+ ":");
$("#Section1Column3").attr("title",uiconfigs.DocumentDetails.Label5Section2Column3Text);
$("#Section1Column4").html(uiconfigs.DocumentDetails.Label6Section2Column4Text+ ":");
$("#Section1Column4").attr("title",uiconfigs.DocumentDetails.Label6Section2Column4Text);
$("#Section1Column5").html(uiconfigs.DocumentDetails.Label7Section2Column5Text+ ":");
$("#Section1Column5").attr("title",uiconfigs.DocumentDetails.Label7Section2Column5Text);
$("#Section1Column6").html(uiconfigs.DocumentDetails.Label8Section2Column6Text+ ":");
$("#Section1Column6").attr("title",uiconfigs.DocumentDetails.Label8Section2Column6Text);
$("#Section1Column7").html(uiconfigs.DocumentDetails.Label9Section2Column7Text+ ":");
$("#Section1Column7").attr("title",uiconfigs.DocumentDetails.Label9Section2Column7Text);
$("#Section1Column8").html(uiconfigs.DocumentDetails.Label10Section2Column8Text+ ":");
$("#Section1Column8").attr("title",uiconfigs.DocumentDetails.Label10Section2Column8Text);
$("#Section1Column9").html(uiconfigs.DocumentDetails.Label11Section2Column9Text+ ":");
$("#Section1Column9").attr("title",uiconfigs.DocumentDetails.Label11Section2Column9Text);
$("#Section1Column10").html(uiconfigs.DocumentDetails.Label12Section2Column10Text+ ":");
$("#Section1Column10").attr("title",uiconfigs.DocumentDetails.Label12Section2Column10Text);
$("#Section1Column11").html(uiconfigs.DocumentDetails.Label13Section2Column11Text+ ":");
$("#Section1Column11").attr("title",uiconfigs.DocumentDetails.Label13Section2Column11Text);
$("#Section1Column12").html(uiconfigs.DocumentDetails.Label14Section2Column12Text+ ":");
$("#Section1Column12").attr("title",uiconfigs.DocumentDetails.Label14Section2Column12Text);
$("#Section1Column13").html(uiconfigs.DocumentDetails.Label15Section2Column13Text+ ":");
$("#Section1Column13").attr("title",uiconfigs.DocumentDetails.Label15Section2Column13Text);
$("#Section1Column14").html(uiconfigs.DocumentDetails.Label16Section2Column14Text+ ":");
$("#Section1Column14").attr("title",uiconfigs.DocumentDetails.Label16Section2Column14Text);
$("#Section2Header").html(uiconfigs.DocumentDetails.Label17Section2HeaderText);
$("#Section2Column1").html(uiconfigs.DocumentDetails.Label18Section2Column1Text);
$("#Section2Column2").html(uiconfigs.DocumentDetails.Label19Section2Column2Text);
$("#Section2Column3").html(uiconfigs.DocumentDetails.Label20Section2Column3Text);
$("#spanOpenDownload").html(uiconfigs.DocumentDetails.Label21MenuHeaderOption1Text);
$("#spanDownload").html(uiconfigs.DocumentDetails.Label22MenuHeaderOption2Text);
$("#spanShare").html(uiconfigs.DocumentDetails.Label23MenuHeaderOption3Text);
$("#spanCheckin").html(uiconfigs.DocumentDetails.Label24MenuHeaderOption4Text);
$("#spanCheckOut").html(uiconfigs.DocumentDetails.Label25MenuHeaderOption5Text);
$("#spanSendLink").html(uiconfigs.DocumentDetails.Label26MenuHeaderOption6Text);
$("#spanPin").html(uiconfigs.DocumentDetails.Label27MenuHeaderOption7Text);
$("#spanUnpin").html(uiconfigs.DocumentDetails.Label28MenuHeaderOption8Text);
$("#openDocument").attr("title",uiconfigs.DocumentDetails.Label21MenuHeaderOption1Text);
$("#download").attr("title",uiconfigs.DocumentDetails.Label22MenuHeaderOption2Text);
$("#shareDocument").attr("title",uiconfigs.DocumentDetails.Label23MenuHeaderOption3Text);
$("#checkInDocument").attr("title",uiconfigs.DocumentDetails.Label24MenuHeaderOption4Text);
$("#checkOutDocument").attr("title",uiconfigs.DocumentDetails.Label25MenuHeaderOption5Text);
$("#sendLink").attr("title",uiconfigs.DocumentDetails.Label26MenuHeaderOption6Text);
$("#pinDocument").attr("title",uiconfigs.DocumentDetails.Label27MenuHeaderOption7Text);
$("#unpinDocument").attr("title",uiconfigs.DocumentDetails.Label28MenuHeaderOption8Text);
}
/* Function to be executed once DOM loaded completely */
$(document).ready(function () {
@ -1166,6 +1237,7 @@ var oDocumentLandingObject = (function () {
oDocumentLanding.sDocumentParentListId = oCommonFunctions.getParameterByName("listguid");
oDocumentLanding.sDocumentGUID = oCommonFunctions.getParameterByName("docguid");
oCommonFunctions.applyBindings();
oCommonFunctions.applyConfigSettings();
if ("" === oDocumentLanding.sClientRelativeUrl || "" === oDocumentLanding.sDocumentParentListId || "" === oDocumentLanding.sDocumentGUID) {
oCommonFunctions.showCommonErrorPopUp(oErrorMessages.sInsufficientParametersMessage);
} else {

Просмотреть файл

@ -1,7 +1,9 @@
/// <disable>JS1003,JS2005,JS2024,JS2027,JS2031,JS2032,JS2052,JS2053,JS2064,JS2073,JS2074,JS2076,JS2085,JS3054,JS3057,JS3085,JS3116,JS3056,JS3058,JS3092</disable>
/* Matter Center constants */
var oMatterLandingHtmlConstants = {
"matterInfoHtml": "<div class='documentLoadingIcon hide'><img class=\"loadingIcon\" src=\"@@LoadingImage\" alt=\"Loading\"/></div><div class=\"errorPopUpHolder hide\"><div class=\"errorPopupBackground\"></div><div class=\"errorPopUpContainer errorPopUpCenter\"><img title=\"Close\" class=\"errorPopUpCloseIcon popUpFloatRight\" alt=\"Close\" src=\"@@PopupCloseIcon\"><div class=\"errorPopUpMessage\"><span id=\"genericMessage\">Something went wrong</span><div class=\"clear\"></div><div id=\"expandCollapse\"><span class=\"inlineElement\" id=\"expandMessage\">+</span><span id=\"collapseMessage\" class=\"inlineElement hide\">-</span><span>Click here for details</span></div><div class=\"clear\"></div><span id=\"errorMessage\" class=\"hide ellipsis\"></span></div></div></div><div title='@@MatterName' class=\"matterName\">@@MatterName</div><div class=\"matterLink\"><a class=\"matterLinkPart\" title='My Matters' href=\"@@FindMatterUrl\" target=\"_self\"> My Matters </a> > <a class=\"matterLinkPart\" title='@@MatterName' href=\"@@MatterUrl\" target=\"_self\"> @@MatterName </a> </div><div class=\"matterAction\"><div class=\"matterView\"><div class=\"matterProfileTitle\">Matter Profile</div><div class=\"matterDescriptionTitle changeSection\">Matter Description</div></div>@@PinChunk</div><div class=\"clear\"></div><div class=\"matterDescriptionBody hide\"><div><img class=\"loadingIcon\" alt=\"Loading Image\" src=\"@@LoadingImage\" /></div></div><div class=\"matterProfileBody\"><div class=\"matterDetails\"><img class=\"loadingIcon\" alt=\"Loading Image\" src=\"@@LoadingImage\" /></div><div class=\"clear\"></div></div>",
"matterInfoHtml": "<div class='documentLoadingIcon hide'><img class=\"loadingIcon\" src=\"@@LoadingImage\" alt=\"Loading\"/></div><div class=\"errorPopUpHolder hide\"><div class=\"errorPopupBackground\"></div><div class=\"errorPopUpContainer errorPopUpCenter\"><img title=\"Close\" class=\"errorPopUpCloseIcon popUpFloatRight\" alt=\"Close\" src=\"@@PopupCloseIcon\"><div class=\"errorPopUpMessage\"><span id=\"genericMessage\">Something went wrong</span><div class=\"clear\"></div><div id=\"expandCollapse\"><span class=\"inlineElement\" id=\"expandMessage\">+</span><span id=\"collapseMessage\" class=\"inlineElement hide\">-</span><span>Click here for details</span></div><div class=\"clear\"></div><span id=\"errorMessage\" class=\"hide ellipsis\"></span></div></div></div><div title='@@MatterName' class=\"matterName\">@@MatterName</div><div class=\"matterLink\"><a class=\"matterLinkPart\" title='My Matters' href=\"@@FindMatterUrl\" target=\"_self\"> @@MyMatters </a> > <a class=\"matterLinkPart\" title='@@MatterName' href=\"@@MatterUrl\" target=\"_self\"> @@MatterName </a> </div><div class=\"matterAction\"><div class=\"matterView\"><div class=\"matterProfileTitle\">@@Label1Tab1HeaderText</div><div class=\"matterDescriptionTitle changeSection\">@@Label2Tab2HeaderText</div></div>@@PinChunk</div><div class=\"clear\"></div><div class=\"matterDescriptionBody hide\"><div><img class=\"loadingIcon\" alt=\"Loading Image\" src=\"@@LoadingImage\" /></div></div><div class=\"matterProfileBody\"><div class=\"matterDetails\"><img class=\"loadingIcon\" alt=\"Loading Image\" src=\"@@LoadingImage\" /></div><div class=\"clear\"></div></div>",
"taskSectionHtml": "<div class=\"taskHeading\"> <div class=\"headingText\" title='Task'> Task </div> <div class=\"taskOption\"> <a href=\"@@TaskLink\" onclick=\"LogEvent(appInsightsMatterLandingText + appInsightsOperations.Task)\" title= \"View / Edit\" target =\"_self\">View / Edit </a></div> </div> <div class=\"taskBoard\"><img class=\"loadingIcon\" src=\"@@LoadingImage\" alt=\"Loading\"/></div>",
"calendarSectionHtml": "<div class=\"calenderHeading\"> <div title='Calendar' class=\"headingText\"> Calendar Events </div><div class=\"calenderOption\"><a href=\"@@TaskLink\" title= \"View / Edit\" target =\"_self\" onclick=\"LogEvent(appInsightsMatterLandingText + appInsightsOperations.Calendar)\" >View / Edit </a></div></div><div class=\"eventBoard\"><img class=\"loadingIcon\" src=\"@@LoadingImage\" alt=\"Loading\"/></div>",
"rssSectionHtml": "<div class=\"taskHeading\"><div title='Related News (RSS)' class=\"headingText\"> Related News (RSS) </div></div><div class=\"clear\"></div>",
@ -180,40 +182,29 @@ oGlobalConstants.Go_To_OneNote = "GoToOneNote";
oGlobalConstants.sAppName = "ProvisionDMSMatter";
oGlobalConstants.sSendMailListName = "SendMail";
oGlobalConstants.sEffectivePermissionUrl = "{0}/_api/Web/lists/getbytitle('{1}')/EffectiveBasePermissions";
oGlobalConstants.matterCenterMatterList = "MatterCenterMatters";
// Declare the element for pin
var oElement = null;
//window.location.pathname.split('/').pop().replace('.aspx', '')
/* Function to get matter name in case if GUID is not present */
function getMatterName() {
return ("undefined" === typeof (documentLibraryGUID)) ? documentLibraryName : documentLibraryGUID;
//return documentLibraryGUID;
}
/* Document ready function */
$(document).ready(function () {
"use strict";
displayHeaderAndFooterContent();
var clientUrl = _spPageContextInfo.webServerRelativeUrl + "/";
LogEvent(appInsightsMatterLandingText + appInsightsOperations.PageLoad);
/* Make a call to display content on the page */
//documentLibraryGUID = window.location.pathname.split('/').pop().replace('.aspx', '')
displayContent();
/* Register the click event for Matter Information section */
$(".matterDescriptionTitle,.matterProfileTitle").click(function () {
var className = $(this)[0].className;
if (-1 !== className.indexOf("matterDescriptionTitle")) {
$(".matterDescriptionTitle").removeClass("changeSection");
$(".matterProfileTitle").addClass("changeSection");
$(".matterDescriptionBody").removeClass("hide");
$(".matterProfileBody").addClass("hide");
LogEvent(appInsightsMatterLandingText + appInsightsOperations.MatterDescription);
} else {
$(".matterDescriptionTitle").addClass("changeSection");
$(".matterProfileTitle").removeClass("changeSection");
$(".matterDescriptionBody").addClass("hide");
$(".matterProfileBody").removeClass("hide");
LogEvent(appInsightsMatterLandingText + appInsightsOperations.MatterInfo);
}
});
$("#matterLink").click(function (event) {
LogEvent(appInsightsMatterLandingText + appInsightsOperations.MatterLink);
@ -311,8 +302,7 @@ $(document).ready(function () {
$(".errorPopUpHolder").addClass("hide");
});
// Cache the pin element
oElement = document.getElementById("PinMatter");
// Make a call to SharePoint functions
ExecuteOrDelayUntilScriptLoaded(function () {
@ -330,12 +320,14 @@ $(document).ready(function () {
getCurrentUserTitle();
retrievePinListItems();
}, "sp.js");
});
$(window).on("resize", function (event) {
adjustFooter();
});
/* Close the popup if clicked outside the selected area */
function closeAllPopup(event) {
"use strict";
@ -396,6 +388,7 @@ function createModalDialog(isEdit) {
var options = SP.UI.$create_DialogOptions();
options.title = title;
options.url = oGlobalModalDialog.url + "?" + querystring;
options.width = oGlobalModalDialog.width;
options.height = oGlobalModalDialog.height;
if ("addEventListener" in window) { // All browsers except IE before version 9
@ -429,47 +422,132 @@ function receiveMessage(event) {
/* Attaches all the content on the page */
function displayContent() {
"use strict";
"use strict";
var url = "/sites/catalog/SiteAssets/Matter Center Assets/Common Assets/Scripts/uiconfigforspo.js";
$.getScript( url, function() {
/* Remove the hierarchy div if it already exists */
var hierarchyDiv = $("#documentLibraryTitle");
if (hierarchyDiv) {
$(hierarchyDiv).remove();
}
var listUrl = _spPageContextInfo.webAbsoluteUrl + "/Lists";
//alert(uiconfigs.MatterLanding.Label1Tab1HeaderText);
oMatterLandingCommonObjects.hierarchyLibraryName = uiconfigs.MatterLanding.Label19Section4Text;
/* Set the matter information html */
var pinChunk = oMatterLandingHtmlConstants.pinHtml.replace("@@PinIcon", oCommonLinks.sCatalogSite + oMatterLandingCommonObjects.oMatterCenterAssetsLocation + oMatterLandingAssetsLocation.pinIcon);
pinChunk = pinChunk.replace("@@LoadingImage", oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage);
pinChunk = pinChunk.replace("@@UnpinIcon", oCommonLinks.sCatalogSite + oMatterLandingCommonObjects.oMatterCenterAssetsLocation + oMatterLandingAssetsLocation.unPinIcon);
var sMatterInformationText = oMatterLandingHtmlConstants.matterInfoHtml.replace("@@PinChunk", pinChunk);
sMatterInformationText = sMatterInformationText.replace("@@FindMatterUrl", oFooterLinks.dashboard + oFooterLinks.matterDocumentsQueryString);
sMatterInformationText = sMatterInformationText.replace("@@MatterUrl", _spPageContextInfo.siteServerRelativeUrl + "/" + getMatterName() + oGlobalConstants.sUrlExtension);
sMatterInformationText = sMatterInformationText.replace(/@@MatterName/g, documentLibraryName);
sMatterInformationText = sMatterInformationText.replace(/@@LoadingImage/g, oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage);
sMatterInformationText = sMatterInformationText.replace(/@@PopupCloseIcon/g, oCommonLinks.sCatalogSite + oMatterLandingCommonObjects.oMatterCenterAssetsLocation + oMatterLandingAssetsLocation.popupCloseIcon);
sMatterInformationText = sMatterInformationText.replace("@@Label1Tab1HeaderText", uiconfigs.MatterLanding.Label1Tab1HeaderText);
sMatterInformationText = sMatterInformationText.replace("@@Label2Tab2HeaderText", uiconfigs.MatterLanding.Label2Tab2HeaderText);
sMatterInformationText = sMatterInformationText.replace("@@MyMatters", uiconfigs.MatterLanding.Label18MenuText);
sMatterInformationText = sMatterInformationText.replace("title='My Matters'", "title='" + uiconfigs.MatterLanding.Label18MenuText + "'");
/* Remove the hierarchy div if it already exists */
var hierarchyDiv = $("#documentLibraryTitle");
if (hierarchyDiv) {
$(hierarchyDiv).remove();
}
$("#matterInfo").html(sMatterInformationText);
$("#matterInfo").parent().append(oMatterLandingHtmlConstants.hierarchyHtml.replace(/@@MatterName/g, oMatterLandingCommonObjects.hierarchyLibraryName));
/* Set the task panel html text */
var sTaskPanelText = oMatterLandingHtmlConstants.taskSectionHtml;
sTaskPanelText = sTaskPanelText.replace("@@LoadingImage", oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage);
sTaskPanelText = sTaskPanelText.replace("@@TaskLink", listUrl + getMatterName() + libraryNameSuffix.taskSuffix);
sTaskPanelText = sTaskPanelText.replace("title='Task'> Task </div>", "title='" + uiconfigs.MatterLanding.Label14TaskeTitleText + "'> "+ uiconfigs.MatterLanding.Label14TaskeTitleText+" </div>");
sTaskPanelText = sTaskPanelText.replace("View / Edit </a>", "" + uiconfigs.MatterLanding.Label17EditTitleText + "</a>");
sTaskPanelText = sTaskPanelText.replace("title= \"View / Edit\"" , "title=\"" + uiconfigs.MatterLanding.Label17EditTitleText+ "\"");
var listUrl = _spPageContextInfo.webAbsoluteUrl + "/Lists/";
$("#taskPane").html(sTaskPanelText);
noItemsMessage.noTasks = uiconfigs.MatterLanding.ErrMsg1NoTask;
noItemsMessage.errorMsgTask = uiconfigs.MatterLanding.ErrMsg2FetchTask;
noItemsMessage.errorMsgCalendar = uiconfigs.MatterLanding.ErrMsg3CreateEvent;
noItemsMessage.noEvents = uiconfigs.MatterLanding.ErrMsg4ActiveEvents;
noItemsMessage.noDescription = uiconfigs.MatterLanding.ErrMsg5NoMatterDescription;
noItemsMessage.errorRetrieveFails = uiconfigs.MatterLanding.ErrMsg6ForPinUnpinMatters;
noItemsMessage.errorMatterInfo = uiconfigs.MatterLanding.ErrMsg7MatterInformation;
noItemsMessage.errorMatterDesc = uiconfigs.MatterLanding.ErrMsg8MatterDescription;
noItemsMessage.errorPinUnpinData = uiconfigs.MatterLanding.ErrMsg9NoPinUnpinMatter;
oPropertyNameMapping.MatterName = uiconfigs.MatterLanding.Label1MenuText;
oPropertyNameMapping.ClientName = uiconfigs.MatterLanding.Label3Tab1Column1Text;
oPropertyNameMapping.AreaOfLaw = uiconfigs.MatterLanding.Label6Tab1Column4Text;
oPropertyNameMapping.ClientID = uiconfigs.MatterLanding.Label10Section1Text;
oPropertyNameMapping.MatterID = uiconfigs.MatterLanding.Label9Section1Text;
oPropertyNameMapping.PracticeGroup= uiconfigs.MatterLanding.Label5Tab1Column3Text;
oPropertyNameMapping.ResponsibleAttorney = uiconfigs.MatterLanding.Label7Tab1Column5Text;
oPropertyNameMapping.Description = uiconfigs.MatterLanding.Label11Section1Text;
oGlobalConstants.sMatterIdAndClientIdTitle = uiconfigs.MatterLanding.Label4Tab1Column2Text;
/* Set the matter information html */
var pinChunk = oMatterLandingHtmlConstants.pinHtml.replace("@@PinIcon", oCommonLinks.sCatalogSite + oMatterLandingCommonObjects.oMatterCenterAssetsLocation + oMatterLandingAssetsLocation.pinIcon);
pinChunk = pinChunk.replace("@@LoadingImage", oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage);
pinChunk = pinChunk.replace("@@UnpinIcon", oCommonLinks.sCatalogSite + oMatterLandingCommonObjects.oMatterCenterAssetsLocation + oMatterLandingAssetsLocation.unPinIcon);
var sMatterInformationText = oMatterLandingHtmlConstants.matterInfoHtml.replace("@@PinChunk", pinChunk);
sMatterInformationText = sMatterInformationText.replace("@@FindMatterUrl", oFooterLinks.dashboard + oFooterLinks.matterDocumentsQueryString);
sMatterInformationText = sMatterInformationText.replace("@@MatterUrl", _spPageContextInfo.siteServerRelativeUrl + "/" + getMatterName() + oGlobalConstants.sUrlExtension);
sMatterInformationText = sMatterInformationText.replace(/@@MatterName/g, documentLibraryName);
sMatterInformationText = sMatterInformationText.replace(/@@LoadingImage/g, oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage);
sMatterInformationText = sMatterInformationText.replace(/@@PopupCloseIcon/g, oCommonLinks.sCatalogSite + oMatterLandingCommonObjects.oMatterCenterAssetsLocation + oMatterLandingAssetsLocation.popupCloseIcon);
$("#matterInfo").html(sMatterInformationText);
$("#matterInfo").parent().append(oMatterLandingHtmlConstants.hierarchyHtml.replace(/@@MatterName/g, oMatterLandingCommonObjects.hierarchyLibraryName));
/* Set the calendar panel html text */
var sCalendarPanelText = oMatterLandingHtmlConstants.calendarSectionHtml;
sCalendarPanelText = sCalendarPanelText.replace("@@LoadingImage", oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage);
sCalendarPanelText = sCalendarPanelText.replace("@@TaskLink", listUrl + getMatterName() + libraryNameSuffix.calendarSuffix);
sCalendarPanelText = sCalendarPanelText.replace("Calendar Events </div>", "" + uiconfigs.MatterLanding.Label15CalenderTitleText + " </div>");
sCalendarPanelText = sCalendarPanelText.replace("title= \"View / Edit\"" , "title=\"" + uiconfigs.MatterLanding.Label17EditTitleText+ "\"");
sCalendarPanelText = sCalendarPanelText.replace("View / Edit </a>", "" + uiconfigs.MatterLanding.Label17EditTitleText + "</a>");
/* Set the task panel html text */
var sTaskPanelText = oMatterLandingHtmlConstants.taskSectionHtml;
sTaskPanelText = sTaskPanelText.replace("@@LoadingImage", oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage);
sTaskPanelText = sTaskPanelText.replace("@@TaskLink", listUrl + getMatterName() + libraryNameSuffix.taskSuffix);
$("#taskPane").html(sTaskPanelText);
/* Set the calendar panel html text */
var sCalendarPanelText = oMatterLandingHtmlConstants.calendarSectionHtml;
sCalendarPanelText = sCalendarPanelText.replace("@@LoadingImage", oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage);
sCalendarPanelText = sCalendarPanelText.replace("@@TaskLink", listUrl + getMatterName() + libraryNameSuffix.calendarSuffix);
$("#calendarPane").html(sCalendarPanelText);
$("#calendarPane").html(sCalendarPanelText);
/* Set the rss panel html text */
var sRSSText = oMatterLandingHtmlConstants.rssSectionHtml;
sRSSText = sRSSText.replace("Related News (RSS) </div>", "" + uiconfigs.MatterLanding.Label16RSSFeedTitleText+ "</a>");
sRSSText = sRSSText.replace("title='Related News (RSS)'", "title='" + uiconfigs.MatterLanding.Label16RSSFeedTitleText + "'");
/* Set the rss panel html text */
var sRSSText = oMatterLandingHtmlConstants.rssSectionHtml;
$("#rssPane").html(sRSSText);
/* Add loading image to OneNote section */
$("#oneNotePane").html(oMatterLandingHtmlConstants.oneNoteLoadingHtml.replace("@@LoadingImage", oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage));
$("#rssPane").html(sRSSText);
/* Add loading image to OneNote section */
$("#oneNotePane").html(oMatterLandingHtmlConstants.oneNoteLoadingHtml.replace("@@LoadingImage",
oCommonLinks.sCatalogSite + oCommonLinks.oMatterCenterAssetsLocation + oCommonAssets.loadingImage));
// Cache the pin element
oElement = $("#PinMatter");
$(".matterDescriptionTitle, .matterProfileTitle").click(function () {
var className = $(this)[0].className;
if (-1 !== className.indexOf("matterDescriptionTitle")) {
$(".matterDescriptionTitle").removeClass("changeSection");
$(".matterProfileTitle").addClass("changeSection");
$(".matterDescriptionBody").removeClass("hide");
$(".matterProfileBody").addClass("hide");
LogEvent(appInsightsMatterLandingText + appInsightsOperations.MatterDescription);
}
else {
$(".matterDescriptionTitle").addClass("changeSection");
$(".matterProfileTitle").removeClass("changeSection");
$(".matterDescriptionBody").addClass("hide");
$(".matterProfileBody").removeClass("hide");
LogEvent(appInsightsMatterLandingText + appInsightsOperations.MatterInfo);
}
});
$("#matterLink").text(uiconfigs.MatterLanding.Menu1Option1Text);
$("#matterLink").attr('title', uiconfigs.MatterLanding.Menu1Option1Text);
$("#documentLink").text(uiconfigs.MatterLanding.Menu1Option2Text);
$("#documentLink").attr('title', uiconfigs.MatterLanding.Menu1Option2Text);
$("#settingsLink").text(uiconfigs.MatterLanding.Menu1Option3Text);
$("#settingsLink").attr('title', uiconfigs.MatterLanding.Menu1Option3Text);
$(".iconText .mainText")[0].innerHTML = uiconfigs.MatterLanding.MenuImageUpperCaption;
$(".iconText .subText")[0].innerHTML = uiconfigs.MatterLanding.MenuImageLowerCaption;
//$("#searchText").attr('placeholder', uiconfigs.MatterLanding.Menu1Option3Text);
});
}
// Replace query string key with value
@ -751,7 +829,7 @@ function getUserData() {
arrResponsibleAttorney = trimEndChar(htmlDecode(oPinProperties.ResponsibleAttorney.trim()), ";").split(";");
}
arrUserNames = $.merge(arrTeamMembers, arrResponsibleAttorney);
if (oPinProperties.BlockedUsers) {
if (oPinProperties.BlockedUsers && trimEndChar(htmlDecode(oPinProperties.BlockedUsers.trim()), ";").length > 0) {
arrBlockUserName = trimEndChar(htmlDecode(oPinProperties.BlockedUsers.trim()), ";").split(";");
arrBlockUserName = unique($.map(arrBlockUserName, function (item) { return item.trim(); }));
}
@ -861,7 +939,7 @@ function displayUserDetails(oUserArray, IsTeam) {
// Function to check if user is exist of SharePoint Group
function checkUserExistsInSharePointGroup() {
"use strict";
var sUrl = oCommonLinks.sCatalogSite + oGlobalConstants.sEffectivePermissionUrl.replace("{0}", oGlobalConstants.sAppName).replace("{1}", oGlobalConstants.sSendMailListName);
var sUrl = oCommonLinks.sCatalogSite + oGlobalConstants.sEffectivePermissionUrl.replace("{0}", oGlobalConstants.matterCenterMatterList);
$.ajax({
url: sUrl,
type: "GET",
@ -1421,6 +1499,10 @@ function pinUnpinMatter(event) {
"use strict";
$(".pinIcon .loadingIcon").removeClass("hide");
$("#PinMatter").addClass("hide");
// if( $(".pinImg").cl)
// $(".pinImg").addClass("hide");
// $(".unPinImg").removeClass("hide");
if (oElement) {
if (oGlobalConstants.sOperationPin === $(oElement).attr("title")) {
LogEvent(appInsightsMatterLandingText + appInsightsOperations.Pin);
@ -1468,7 +1550,7 @@ function urlExists() {
// Get the link from the data-href attribute
var oOneNoteLink = $("#oneNotePane"), arrOneNoteURL;
var sDocumentLibraryOriginalName = getMatterName();
var sOneNoteURL = _spPageContextInfo.siteServerRelativeUrl + oGlobalConstants.wopiFrameUrl + _spPageContextInfo.siteServerRelativeUrl + "/" + sDocumentLibraryOriginalName + libraryNameSuffix.oneNoteSuffix + "/" + sDocumentLibraryOriginalName + "/" + sDocumentLibraryOriginalName + oGlobalConstants.oneNoteExtension;
var sOneNoteURL = _spPageContextInfo.siteServerRelativeUrl + oGlobalConstants.wopiFrameUrl + _spPageContextInfo.siteServerRelativeUrl + "/" + sDocumentLibraryOriginalName + libraryNameSuffix.oneNoteSuffix + "/" + documentLibraryName + "/" + sDocumentLibraryOriginalName + oGlobalConstants.oneNoteExtension;
if (sOneNoteURL && "" !== sOneNoteURL) {
arrOneNoteURL = sOneNoteURL.split("sourcedoc=");
if (arrOneNoteURL.length && arrOneNoteURL[1]) {

Просмотреть файл

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|AnyCPU">
<Configuration>Debug</Configuration>
<Platform>AnyCPU</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|AnyCPU">
<Configuration>Release</Configuration>
<Platform>AnyCPU</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>ad4204fd-2f59-4a0c-868a-4a9a3c602df1</ProjectGuid>
</PropertyGroup>
<PropertyGroup>
<TargetFrameworkIdentifier>Deployment</TargetFrameworkIdentifier>
<TargetFrameworkVersion>1.0</TargetFrameworkVersion>
<PrepareForBuildDependsOn>
</PrepareForBuildDependsOn>
</PropertyGroup>
<Import Condition=" Exists('Deployment.targets') " Project="Deployment.targets" />
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
<!-- vertag<:>start tokens<:>maj.min -->
<Import Condition=" Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Deployment\1.1\DeploymentProject.targets') " Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Deployment\1.1\DeploymentProject.targets" />
<!-- vertag<:>end -->
<ItemGroup>
<Folder Include="Tools\" />
</ItemGroup>
<ItemGroup>
<None Include="Deployment.targets">
<Visible>False</Visible>
</None>
<Content Include="Scripts\Deploy-AzureResourceGroup.ps1" />
<None Include="Scripts\Create-AzureStorageTable.ps1" />
<None Include="Scripts\KeyVaultSecret.ps1" />
<None Include="Scripts\ManageTableStorageWithCsvFile\ManageTableStorageWithCsvFile.psd1" />
<None Include="Scripts\ManageTableStorageWithCsvFile\ManageTableStorageWithCsvFile.psm1" />
<None Include="Templates\template.json" />
<None Include="Templates\template.parameters.json" />
</ItemGroup>
<ItemGroup>
<Content Include="Tools\AzCopy.exe" />
<Content Include="Tools\Microsoft.Data.Edm.dll">
<Visible>False</Visible>
</Content>
<Content Include="Tools\Microsoft.Data.OData.dll">
<Visible>False</Visible>
</Content>
<Content Include="Tools\Microsoft.Data.Services.Client.dll">
<Visible>False</Visible>
</Content>
<Content Include="Tools\Microsoft.WindowsAzure.Storage.dll">
<Visible>False</Visible>
</Content>
<Content Include="Tools\Microsoft.WindowsAzure.Storage.DataMovement.dll">
<Visible>False</Visible>
</Content>
</ItemGroup>
<Target Name="GetReferenceAssemblyPaths" />
</Project>

Просмотреть файл

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputPath>bin\$(Configuration)\</OutputPath>
<DebugSymbols>false</DebugSymbols>
<SkipCopyBuildProduct>true</SkipCopyBuildProduct>
<AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
<TargetRuntime>None</TargetRuntime>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">obj\</BaseIntermediateOutputPath>
<BaseIntermediateOutputPath Condition=" !HasTrailingSlash('$(BaseIntermediateOutputPath)') ">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
<ProjectReferencesOutputPath Condition=" '$(ProjectReferencesOutputPath)' == '' ">$(IntermediateOutputPath)ProjectReferences</ProjectReferencesOutputPath>
<ProjectReferencesOutputPath Condition=" !HasTrailingSlash('$(ProjectReferencesOutputPath)') ">$(ProjectReferencesOutputPath)\</ProjectReferencesOutputPath>
<StageArtifacts Condition=" '$(StageArtifacts)' == '' ">true</StageArtifacts>
</PropertyGroup>
<PropertyGroup>
<DefineCommonItemSchemas>false</DefineCommonItemSchemas>
<DefineCommonCapabilities>false</DefineCommonCapabilities>
</PropertyGroup>
<ProjectExtensions>
<ProjectCapabilities>
<DeploymentProject />
</ProjectCapabilities>
</ProjectExtensions>
<ItemDefinitionGroup>
<Content>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<None>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
<ProjectReference>
<Private>false</Private>
<Targets>Build</Targets>
</ProjectReference>
</ItemDefinitionGroup>
<Target Name="CreateManifestResourceNames" />
<PropertyGroup>
<StageArtifactsDependsOn>
_GetDeploymentProjectContent;
_CalculateContentOutputRelativePaths;
_GetReferencedProjectsOutput;
_CalculateArtifactStagingDirectory;
_CopyOutputToArtifactStagingDirectory;
</StageArtifactsDependsOn>
</PropertyGroup>
<Target Name="_CopyOutputToArtifactStagingDirectory">
<Copy SourceFiles="@(DeploymentProjectContentOutput)" DestinationFiles="$(ArtifactStagingDirectory)\$(MSBuildProjectName)%(RelativePath)" />
<Copy SourceFiles="@(BuildProjectReferencesOutput)" DestinationFiles="$(ArtifactStagingDirectory)%(ProjectName)\%(RecursiveDir)%(FileName)%(Extension)" />
</Target>
<Target Name="_GetDeploymentProjectContent">
<MSBuild Projects="$(MSBuildProjectFile)" Targets="ContentFilesProjectOutputGroup">
<Output TaskParameter="TargetOutputs" ItemName="DeploymentProjectContentOutput" />
</MSBuild>
</Target>
<Target Name="_GetReferencedProjectsOutput">
<PropertyGroup>
<MsBuildProperties>Configuration=$(Configuration);Platform=$(Platform)</MsBuildProperties>
</PropertyGroup>
<MSBuild Projects="@(ProjectReference)"
BuildInParallel="$(BuildInParallel)"
Properties="$(MsBuildProperties)"
Targets="%(ProjectReference.Targets)" />
<ItemGroup>
<BuildProjectReferencesOutput Include="%(ProjectReference.IncludeFilePath)">
<ProjectName>$([System.IO.Path]::GetFileNameWithoutExtension('%(ProjectReference.Identity)'))</ProjectName>
</BuildProjectReferencesOutput>
</ItemGroup>
</Target>
<Target Name="_CalculateArtifactStagingDirectory" Condition=" '$(ArtifactStagingDirectory)'=='' ">
<PropertyGroup>
<ArtifactStagingDirectory Condition=" '$(OutDir)'!='' ">$(OutDir)</ArtifactStagingDirectory>
<ArtifactStagingDirectory Condition=" '$(ArtifactStagingDirectory)'=='' ">$(OutputPath)</ArtifactStagingDirectory>
<ArtifactStagingDirectory Condition=" !HasTrailingSlash('$(ArtifactStagingDirectory)') ">$(ArtifactStagingDirectory)\</ArtifactStagingDirectory>
<ArtifactStagingDirectory>$(ArtifactStagingDirectory)staging\</ArtifactStagingDirectory>
<ArtifactStagingDirectory Condition=" '$(TF_Build)' == 'True' ">$(Build_StagingDirectory)</ArtifactStagingDirectory>
</PropertyGroup>
</Target>
<!-- Appends each of the deployment project's content output files with metadata indicating its relative path from the deployment project's folder. -->
<Target Name="_CalculateContentOutputRelativePaths"
Outputs="%(DeploymentProjectContentOutput.Identity)">
<PropertyGroup>
<_OriginalIdentity>%(DeploymentProjectContentOutput.Identity)</_OriginalIdentity>
<_RelativePath>$(_OriginalIdentity.Replace('$(MSBuildProjectDirectory)', ''))</_RelativePath>
</PropertyGroup>
<ItemGroup>
<DeploymentProjectContentOutput>
<RelativePath>$(_RelativePath)</RelativePath>
</DeploymentProjectContentOutput>
</ItemGroup>
</Target>
<Target Name="CoreCompile" />
<PropertyGroup>
<StageArtifactsAfterTargets Condition=" '$(StageArtifacts)' == 'true' ">
PrepareForRun
</StageArtifactsAfterTargets>
</PropertyGroup>
<Target Name="StageArtifacts" DependsOnTargets="$(StageArtifactsDependsOn)" AfterTargets="$(StageArtifactsAfterTargets)"/>
<!-- Custom target to clean up local deployment staging files -->
<Target Name="DeleteBinObjFolders" BeforeTargets="Clean">
<RemoveDir Directories="$(OutputPath)" />
<RemoveDir Directories="$(BaseIntermediateOutputPath)" />
</Target>
</Project>

Просмотреть файл

@ -0,0 +1,23 @@
Function Create-AzureTableStorage
{
[CmdletBinding(SupportsShouldProcess=$true)]
Param
(
[Parameter(Mandatory=$true)]
[String]$ResourceGroupName,
[Parameter(Mandatory=$true)]
[String]$StorageAccountName,
[Parameter(Mandatory=$true)]
[String]$StorageAccountKey,
[Parameter(Mandatory=$true)]
[String]$TableName
)
Import-Module "$PSScriptRoot\ManageTableStorageWithCsvFile\ManageTableStorageWithCsvFile.psm1"
$Path = "$PSScriptRoot\ManageTableStorageWithCsvFile\AzureStorageTable.csv"
Get-Module -Name ManageTableStorageWithCsvFile
Get-Command -Module ManageTableStorageWithCsvFile
Import-AzureTableStorage -ResourceGroupName $ResourceGroupName -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -TableName $TableName -Path $Path
}

Просмотреть файл

@ -0,0 +1,110 @@
#Requires -Version 3.0
#Requires -Module AzureRM.Resources
#Requires -Module Azure.Storage
Param(
[string] [Parameter(Mandatory=$true)] $ResourceGroupLocation,
[string] $ResourceGroupName = 'Microsoft.Legal.MatterCenter',
[switch] $UploadArtifacts,
[string] $StorageAccountName,
[string] $StorageAccountResourceGroupName,
[string] $StorageContainerName = $ResourceGroupName.ToLowerInvariant() + '-stageartifacts',
[string] $TemplateFile = '..\Templates\template.json',
[string] $TemplateParametersFile = '..\Templates\template.parameters.json',
[string] $ArtifactStagingDirectory = '..\bin\Debug\staging',
[string] $AzCopyPath = '..\Tools\AzCopy.exe',
[string] $DSCSourceFolder = '..\DSC'
)
Import-Module Azure -ErrorAction SilentlyContinue
try {
[Microsoft.Azure.Common.Authentication.AzureSession]::ClientFactory.AddUserAgent("VSAzureTools-$UI$($host.name)".replace(" ","_"), "2.8")
} catch { }
Set-StrictMode -Version 3
$OptionalParameters = New-Object -TypeName Hashtable
$TemplateFile = [System.IO.Path]::Combine($PSScriptRoot, $TemplateFile)
$TemplateParametersFile = [System.IO.Path]::Combine($PSScriptRoot, $TemplateParametersFile)
if ($UploadArtifacts) {
# Convert relative paths to absolute paths if needed
$AzCopyPath = [System.IO.Path]::Combine($PSScriptRoot, $AzCopyPath)
$ArtifactStagingDirectory = [System.IO.Path]::Combine($PSScriptRoot, $ArtifactStagingDirectory)
$DSCSourceFolder = [System.IO.Path]::Combine($PSScriptRoot, $DSCSourceFolder)
Set-Variable ArtifactsLocationName '_artifactsLocation' -Option ReadOnly -Force
Set-Variable ArtifactsLocationSasTokenName '_artifactsLocationSasToken' -Option ReadOnly -Force
$OptionalParameters.Add($ArtifactsLocationName, $null)
$OptionalParameters.Add($ArtifactsLocationSasTokenName, $null)
# Parse the parameter file and update the values of artifacts location and artifacts location SAS token if they are present
$JsonContent = Get-Content $TemplateParametersFile -Raw | ConvertFrom-Json
$JsonParameters = $JsonContent | Get-Member -Type NoteProperty | Where-Object {$_.Name -eq "parameters"}
if ($JsonParameters -eq $null) {
$JsonParameters = $JsonContent
}
else {
$JsonParameters = $JsonContent.parameters
}
$JsonParameters | Get-Member -Type NoteProperty | ForEach-Object {
$ParameterValue = $JsonParameters | Select-Object -ExpandProperty $_.Name
if ($_.Name -eq $ArtifactsLocationName -or $_.Name -eq $ArtifactsLocationSasTokenName) {
$OptionalParameters[$_.Name] = $ParameterValue.value
}
}
$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $StorageAccountResourceGroupName -Name $StorageAccountName).Key1
$StorageAccountContext = (Get-AzureRmStorageAccount -ResourceGroupName $StorageAccountResourceGroupName -Name $StorageAccountName).Context
# Create DSC configuration archive
if (Test-Path $DSCSourceFolder) {
Add-Type -Assembly System.IO.Compression.FileSystem
$ArchiveFile = Join-Path $ArtifactStagingDirectory "dsc.zip"
Remove-Item -Path $ArchiveFile -ErrorAction SilentlyContinue
[System.IO.Compression.ZipFile]::CreateFromDirectory($DSCSourceFolder, $ArchiveFile)
}
# Generate the value for artifacts location if it is not provided in the parameter file
$ArtifactsLocation = $OptionalParameters[$ArtifactsLocationName]
if ($ArtifactsLocation -eq $null) {
$ArtifactsLocation = $StorageAccountContext.BlobEndPoint + $StorageContainerName
$OptionalParameters[$ArtifactsLocationName] = $ArtifactsLocation
}
# Use AzCopy to copy files from the local storage drop path to the storage account container
& $AzCopyPath """$ArtifactStagingDirectory""", $ArtifactsLocation, "/DestKey:$StorageAccountKey", "/S", "/Y", "/Z:$env:LocalAppData\Microsoft\Azure\AzCopy\$ResourceGroupName"
if ($LASTEXITCODE -ne 0) { return }
# Generate the value for artifacts location SAS token if it is not provided in the parameter file
$ArtifactsLocationSasToken = $OptionalParameters[$ArtifactsLocationSasTokenName]
if ($ArtifactsLocationSasToken -eq $null) {
# Create a SAS token for the storage container - this gives temporary read-only access to the container
$ArtifactsLocationSasToken = New-AzureStorageContainerSASToken -Container $StorageContainerName -Context $StorageAccountContext -Permission r -ExpiryTime (Get-Date).AddHours(4)
$ArtifactsLocationSasToken = ConvertTo-SecureString $ArtifactsLocationSasToken -AsPlainText -Force
$OptionalParameters[$ArtifactsLocationSasTokenName] = $ArtifactsLocationSasToken
}
}
# Create or update the resource group using the specified template file and template parameters file
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $ResourceGroupLocation -Verbose -Force -ErrorAction Stop
New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) `
-ResourceGroupName $ResourceGroupName `
-TemplateFile $TemplateFile `
-TemplateParameterFile $TemplateParametersFile `
@OptionalParameters `
-Force -Verbose
$custScriptFile = [System.IO.Path]::Combine($PSScriptRoot, 'MatterCenter-Deploy.ps1')
Invoke-Expression $custScriptFile
Invoke-Expression "$PSScriptRoot/Create-AzureStorageTable.ps1"
Create-AzureTableStorage -ResourceGroupName $ResourceGroupName -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -TableName "MatterCenterConfiguration"

Просмотреть файл

@ -0,0 +1,14 @@
#
# KeyVaultSecret.ps1
#
Param(
[string] [Parameter(Mandatory=$true)] $AppKey,
[string] [Parameter(Mandatory=$true)] $VaultName,
[string] [Parameter(Mandatory=$true)] $secretvalue
)
Login-AzureRmAccount
$secretvalue = ConvertTo-SecureString $AppKey -AsPlainText -Force
$secret = Set-AzureKeyVaultSecret -VaultName $VaultName -Name 'General-AppKey' -SecretValue $secretvalue

Просмотреть файл

@ -0,0 +1,479 @@
"PartitionKey","RowKey","ConfigGroup","Key","Value"
MatterCenterConfig,RowKey001,CreateMatter,Tab1HeaderTitle,Step 1: Select a client and provide basic information for your new matter.
MatterCenterConfig,RowKey002,CreateMatter,Tab2HeaderTitle,Step 2: Confirm that a conflict check was conducted and specify who should be conflicted from or given access to this matter.
MatterCenterConfig,RowKey003,CreateMatter,Tab3HeaderTitle,"Step 3: When you've entered all relevant information for your new matter, create the matter and notify your team."
MatterCenterConfig,RowKey004,CreateMatter,ButtonNextText,Next
MatterCenterConfig,RowKey005,CreateMatter,ButtonPreviousText,Previous
MatterCenterConfig,RowKey006,CreateMatter,ButtonCreateText,Create
MatterCenterConfig,RowKey007,CreateMatter,Tab2NoSearchResultText,No Results Found
MatterCenterConfig,RowKey008,CreateMatter,Tab1Type1Header1Label1,Select a Practice Group
MatterCenterConfig,RowKey009,CreateMatter,Tab1Type1Footer1Label1,Please select primary matter type before you save.
MatterCenterConfig,RowKey010,CreateMatter,Tab1SiteColumn1Caption,Area of Law
MatterCenterConfig,RowKey011,CreateMatter,Tab1SiteColumn2Caption,Sub Area of Law (select matter type)
MatterCenterConfig,RowKey012,CreateMatter,Tab1SiteColumn3Caption,Matter Type
MatterCenterConfig,RowKey013,CreateMatter,Tab1Type1Label1,select primary matter type
MatterCenterConfig,RowKey014,CreateMatter,Tab1ButtonAddTitle,Add
MatterCenterConfig,RowKey015,CreateMatter,Tab1ButtonRemoveTitle,Remove
MatterCenterConfig,RowKey016,CreateMatter,MenuImageTitle,Matter Center menu
MatterCenterConfig,RowKey017,CreateMatter,MenuImageCaption,menu
MatterCenterConfig,RowKey018,CreateMatter,Tab1ButtonCloseTitle,Close
MatterCenterConfig,RowKey019,CreateMatter,Tab1ButtonSelectType,Select Type
MatterCenterConfig,RowKey020,CreateMatter,Tab1ImageLoadingAltText,Loading...
MatterCenterConfig,RowKey021,CreateMatter,MenuItem1LinkTitle,Home
MatterCenterConfig,RowKey022,CreateMatter,MenuItem2LinkTitle,Search matters
MatterCenterConfig,RowKey023,CreateMatter,MenuItem3LinkTitle,Search documents
MatterCenterConfig,RowKey024,CreateMatter,MenuItem1LinkText,Home
MatterCenterConfig,RowKey025,CreateMatter,MenuItem2LinkText,Matters
MatterCenterConfig,RowKey026,CreateMatter,MenuItem3LinkText,Documents
MatterCenterConfig,RowKey027,CreateMatter,ButtonSaveText,Save
MatterCenterConfig,RowKey028,CreateMatter,MenuImageOpenTitle,Open App Switcher
MatterCenterConfig,RowKey029,CreateMatter,MenuImageCloseTitle,Close App Switcher
MatterCenterConfig,RowKey030,CreateMatter,ButtonDeleteText,Delete
MatterCenterConfig,RowKey031,CreateMatter,Tab1LeftButtonAltText,Left
MatterCenterConfig,RowKey032,CreateMatter,Tab1RighttButtonAltText,Right
MatterCenterConfig,RowKey033,CreateMatter,Tab3SectionText,"You have entered all of the necessary information to create this matter. After you click Create and Notify, the matter will be created and all team members will receive an email containing a link to this matter's location. "
MatterCenterConfig,RowKey034,CreateMatter,LabelNotificationPopupForExternalSharingText,The following recipent is outside your organization. Would you still like to invite them to the Assigned Team?
MatterCenterConfig,RowKey035,CreateMatter,RemoveLinkText,Remove
MatterCenterConfig,RowKey036,CreateMatter,ConfirmLinkText,Confirm
MatterCenterConfig,RowKey037,CreateMatter,Tab1Dropdown1Label,Client Name
MatterCenterConfig,RowKey038,CreateMatter,Tab1Header,Open Matter
MatterCenterConfig,RowKey039,CreateMatter,Tab2Header,Assign Permission
MatterCenterConfig,RowKey040,CreateMatter,Tab3Header,Create and Notify
MatterCenterConfig,RowKey041,CreateMatter,Tab2Checkbox1Lebal,Conflict check conducted (must be complete prior to provisioning matter)
MatterCenterConfig,RowKey042,CreateMatter,Tab2Textbox1Label,Who conducted the conflict check?
MatterCenterConfig,RowKey043,CreateMatter,Tab2DateLabel,Date Conducted
MatterCenterConfig,RowKey044,CreateMatter,Tab2RadioButton1Label,Conflict Identified?
MatterCenterConfig,RowKey045,CreateMatter,Tab2RadioButton1Option1,Yes
MatterCenterConfig,RowKey046,CreateMatter,Tab2RadioButton1Option2,No
MatterCenterConfig,RowKey047,CreateMatter,Tab2Textbox2Label,Conflicted Users
MatterCenterConfig,RowKey048,CreateMatter,Tab1Textbox1Label,Client ID
MatterCenterConfig,RowKey049,CreateMatter,Tab2Textbox2PlaceHolder,Enter and select names
MatterCenterConfig,RowKey050,CreateMatter,Tab2RadioButton2Label,Would you like this matter to be secured only to the assigned team?
MatterCenterConfig,RowKey051,CreateMatter,Tab2RadioButton2Option1,Yes
MatterCenterConfig,RowKey052,CreateMatter,Tab2RadioButton2Option2,No
MatterCenterConfig,RowKey053,CreateMatter,Tab2TeamHeader,Assign Team
MatterCenterConfig,RowKey054,CreateMatter,Tab2Textbox3Label,Name
MatterCenterConfig,RowKey055,CreateMatter,Tab2Textbox3PlaceHolder,Enter and select names
MatterCenterConfig,RowKey056,CreateMatter,Tab2Deopdown1Label,Role
MatterCenterConfig,RowKey057,CreateMatter,Tab2Deopdown2Label,Permission Level
MatterCenterConfig,RowKey058,CreateMatter,Tab2AddMoreHeaderLabel,Add More Names
MatterCenterConfig,RowKey059,CreateMatter,Tab1Textbox2Label,Matter Name
MatterCenterConfig,RowKey060,CreateMatter,Tab3CheckBox1Text,Include calendar
MatterCenterConfig,RowKey061,CreateMatter,Tab3CheckBox2Text,Include RSS Feeds
MatterCenterConfig,RowKey062,CreateMatter,Tab3CheckBox3Text,Include email notification
MatterCenterConfig,RowKey063,CreateMatter,Tab3CheckBox4Text,Include Tasks
MatterCenterConfig,RowKey064,CreateMatter,Tab3ButtonText,Create and Notify
MatterCenterConfig,RowKey065,CreateMatter,Tab1Textbox2PlaceholderText,Enter a name for this matter
MatterCenterConfig,RowKey066,CreateMatter,Tab1Textbox3Label,Matter ID
MatterCenterConfig,RowKey067,CreateMatter,Tab1Textbox3PlaceholderText,Enter a matter ID
MatterCenterConfig,RowKey068,CreateMatter,Tab1Textbox4Label,Matter Description
MatterCenterConfig,RowKey069,CreateMatter,Tab1Textbox4PlaceholderText,Enter a brief description of the matter
MatterCenterConfig,RowKey070,CreateMatter,Tab1Textbox5Label,Matter Type (click Select to define the practice group and area of law)
MatterCenterConfig,RowKey071,CreateMatter,Tab1DrpDownLevel1DefaultSelectOption,Select a practice group
MatterCenterConfig,RowKey072,CreateMatter,Tab1TermsSelectionSearchPlaceHolderText,Search by typing
MatterCenterConfig,RowKey073,CreateMatter,Tab1LabelFinalTypeText,MatterType
MatterCenterConfig,RowKey074,CreateMatter,Tab1LabelPrimaryTypeText,Please select primary matter type
MatterCenterConfig,RowKey075,CreateMatter,Tab1LabelPrimaryTypeBeforeSaveText,Please select primary matter type before you save.
MatterCenterConfig,RowKey076,CreateMatter,Tab1ButtonSaveSelectiponText,Save Selections
MatterCenterConfig,RowKey081,DocumentDashboard,LinkImageLoadingTitle,Matter Center Home
MatterCenterConfig,RowKey082,DocumentDashboard,ImageLoadingAltText,Matter Center
MatterCenterConfig,RowKey083,DocumentDashboard,Image1EmailAttachmentText,Email as attachment
MatterCenterConfig,RowKey084,DocumentDashboard,Image2EmailAttachmentLinkText,Email as link
MatterCenterConfig,RowKey085,DocumentDashboard,Image3EmailRemovalAttachmentLinkText,Remove attachment
MatterCenterConfig,RowKey086,DocumentDashboard,SearchDocumentPlaceholderText,"Search by document name, document ID, or keyword"
MatterCenterConfig,RowKey087,DocumentDashboard,ImageAdvanceSearchAltText,Drop Down
MatterCenterConfig,RowKey088,DocumentDashboard,ImageAdvanceSearchTitle,Advanced search
MatterCenterConfig,RowKey089,DocumentDashboard,AdvSearchLabel1Text,Clients
MatterCenterConfig,RowKey090,DocumentDashboard,AdvSearchLabel1FunctionParameterText,client
MatterCenterConfig,RowKey091,DocumentDashboard,AdvSearchTextbox1PlaceholderText,Enter or select a client
MatterCenterConfig,RowKey092,DocumentDashboard,AdvSearchSelectAllLinkText,Select All
MatterCenterConfig,RowKey093,DocumentDashboard,AdvSearchSelectNoneLinkText,Select None
MatterCenterConfig,RowKey094,DocumentDashboard,AdvSearchbuttonOkText,Ok
MatterCenterConfig,RowKey095,DocumentDashboard,AdvSearchbuttonCancelText,Cancel
MatterCenterConfig,RowKey096,DocumentDashboard,AdvSearchLabel2Text,Author
MatterCenterConfig,RowKey097,DocumentDashboard,AdvSearchTextbox2PlaceholderText,Document Author
MatterCenterConfig,RowKey098,DocumentDashboard,AdvSearchLabel3Text,Date
MatterCenterConfig,RowKey099,DocumentDashboard,AdvSearchTextbox3PlaceholderText,From
MatterCenterConfig,RowKey100,DocumentDashboard,AdvSearchTextbox4PlaceholderText,To
MatterCenterConfig,RowKey101,DocumentDashboard,NoSearchResultMsgText,No Results Found
MatterCenterConfig,RowKey102,DocumentDashboard,AdvSearchButtonSearchText,Search
MatterCenterConfig,RowKey103,DocumentDashboard,Tab1HeaderText,My documents
MatterCenterConfig,RowKey104,DocumentDashboard,Tab2HeaderText,All documents
MatterCenterConfig,RowKey105,DocumentDashboard,Tab3HeaderText,Pinned documents
MatterCenterConfig,RowKey106,DocumentDashboard,ImageMailCartIconTitle,Review the contents of your mail cart and send the selected documents to your OneDrive or via email.
MatterCenterConfig,RowKey107,DocumentDashboard,ImageMailCartIconAltText,Mail Cart
MatterCenterConfig,RowKey108,DocumentDashboard,LabelSortByText,Sort by:
MatterCenterConfig,RowKey109,DocumentDashboard,LabelSortByTitle,Sort By
MatterCenterConfig,RowKey110,DocumentDashboard,DrpDownOption1Text,None
MatterCenterConfig,RowKey111,DocumentDashboard,DrpDownOption2Text,Alphabetical
MatterCenterConfig,RowKey112,DocumentDashboard,DrpDownOption3Text,Created date
MatterCenterConfig,RowKey113,DocumentDashboard,DrpDownOption4Text,Modified date
MatterCenterConfig,RowKey114,DocumentDashboard,MattersPreLoadingMsgText, Please wait while the Documents load.
MatterCenterConfig,RowKey115,DocumentDashboard,AttachmentLoadingText,Loading...
MatterCenterConfig,RowKey116,DocumentDashboard,GridColumn1Header,Document
MatterCenterConfig,RowKey117,DocumentDashboard,GridColumn2Header,Client
MatterCenterConfig,RowKey118,DocumentDashboard,GridColumn3Header,Author
MatterCenterConfig,RowKey119,DocumentDashboard,GridColumn4Header,Modified Date
MatterCenterConfig,RowKey120,DocumentDashboard,GridColumn5Header,Document ID
MatterCenterConfig,RowKey121,DocumentDashboard,GridColumn6Header,Version
MatterCenterConfig,RowKey131,Documents,EllipsisLink4Text,Unpin this Document
MatterCenterConfig,RowKey132,Documents,StartDatePlaceHolder,Start mm/dd/yyyy
MatterCenterConfig,RowKey133,Documents,EndDatePlaceHolder,End mm/dd/yyyy
MatterCenterConfig,RowKey134,Documents,ImageWarningTitle,Warning
MatterCenterConfig,RowKey135,Documents,ImageWarningAltText,Warning icon
MatterCenterConfig,RowKey136,Documents,AttachmentSuccessfullyMsgText,Documents successfully attached.
MatterCenterConfig,RowKey137,Documents,AttachmentProgressingText,Attaching
MatterCenterConfig,RowKey138,Documents,AttachmentProgressingWarningText,Do not close Matter Center until all documents are attached.
MatterCenterConfig,RowKey139,Documents,AttachmentLoadingText,Loading...
MatterCenterConfig,RowKey140,Documents,ButtonOkText,Ok
MatterCenterConfig,RowKey141,Documents,ImageClearTitle,Clear
MatterCenterConfig,RowKey142,Documents,LabelCloseText,Close
MatterCenterConfig,RowKey143,Documents,ClearFilterFromLabelText,Clear filters from
MatterCenterConfig,RowKey144,Documents,NoFilterMatchMsgTitle,There are no items that match this filter
MatterCenterConfig,RowKey145,Documents,NoFilterMatchMsgText,There are no items that match this filter
MatterCenterConfig,RowKey146,Documents,LabelDocumentText,documents...
MatterCenterConfig,RowKey147,Documents,LabelOfText,of
MatterCenterConfig,RowKey148,Documents,ImageClearAltText,Clear filters
MatterCenterConfig,RowKey149,Documents,FilterSearchPlaceholderText,Search
MatterCenterConfig,RowKey150,Documents,EllipsisDocTypeIconAltText,Document type icon
MatterCenterConfig,RowKey151,Documents,FlyoutLable1Text,Matter
MatterCenterConfig,RowKey152,Documents,FlyoutLable2Text,Document ID
MatterCenterConfig,RowKey153,Documents,GridColumn8Header,Created Date
MatterCenterConfig,RowKey154,Documents,Dropdown1Item1,All Documents
MatterCenterConfig,RowKey155,Documents,Dropdown1Item2,My Documents
MatterCenterConfig,RowKey156,Documents,Dropdown1Item3,Pinned Documents
MatterCenterConfig,RowKey157,Documents,SearchPlaceholderText,"Search by ID, or document or client name"
MatterCenterConfig,RowKey158,Documents,NoDataSearchText,"Nothing matches your search term or the filter you selected. Please try again.<br>If you applied a filter, remove it to get back to your list.<br>Search suggestions:<br><ul><li>Make sure all words are spelled correctly</li><li>Try different keywords</li><li>Try searching by the matter name or client name</li><li>Try more general search terms</li></ul>"
MatterCenterConfig,RowKey159,Documents,GridColumn1Header,Document
MatterCenterConfig,RowKey160,Documents,GridColumn2Header,Client
MatterCenterConfig,RowKey161,Documents,GridColumn3Header,Client.MatterID
MatterCenterConfig,RowKey162,Documents,GridColumn4Header,Modified Date
MatterCenterConfig,RowKey163,Documents,GridColumn5Header,Author
MatterCenterConfig,RowKey164,Documents,GridColumn6Header,Document Version
MatterCenterConfig,RowKey165,Documents,GridColumn7Header,Checked out to
MatterCenterConfig,RowKey166,Documents,HeaderText,All Documents
MatterCenterConfig,RowKey167,Documents,EllipsisLink1Text,Open this Document
MatterCenterConfig,RowKey168,Documents,EllipsisLink2Text,View Matter Details
MatterCenterConfig,RowKey169,Documents,EllipsisLink3Text,Pin this Document
MatterCenterConfig,RowKey170,Documents,FlyoutButton1Text,Open document
MatterCenterConfig,RowKey171,Documents,FlyoutButton2Text,View document details
MatterCenterConfig,RowKey181,Header,MenuImage1Title,Matter center menu
MatterCenterConfig,RowKey182,Header,MenuImage1Caption,menu
MatterCenterConfig,RowKey183,Header,MenuImage1OpenTitle,Open App Switcher
MatterCenterConfig,RowKey184,Header,MenuImage1CloseTitle,Close App Switcher
MatterCenterConfig,RowKey185,Header,Menu1Option1Title,Home
MatterCenterConfig,RowKey186,Header,Menu1Option2Title,Search matters
MatterCenterConfig,RowKey187,Header,Menu1Option3Title,Search documents
MatterCenterConfig,RowKey188,Header,Menu1Option1Text,Home
MatterCenterConfig,RowKey189,Header,Menu1Option2Text,Matters
MatterCenterConfig,RowKey190,Header,Menu1Option3Text,Documents
MatterCenterConfig,RowKey191,Header,ContextualHelpImageTitle,Matter center help
MatterCenterConfig,RowKey192,Header,ContextualHelpHeader,Matter Center For Outlook
MatterCenterConfig,RowKey193,Header,ContextualHelpNoLinkText,There are no help links available.
MatterCenterConfig,RowKey194,Header,ContextualHelpFooterLink1Label,Matter Center Aisling Support
MatterCenterConfig,RowKey195,Header,LogoImageTitle,Matter center home
MatterCenterConfig,RowKey196,Header,ContextualHelpLabel1,Get to know this view
MatterCenterConfig,RowKey197,Header,ContextualHelpLabel2,How do I get Project Center on my device?
MatterCenterConfig,RowKey198,Header,MatterCenterSupportLink,mailto:support@supportsite.com
MatterCenterConfig,RowKey199,Header,ContextualHelpFooterLink1Title,Write an email to support
MatterCenterConfig,RowKey200,Header,ContextualHelpFooterLabel,Questions? Contact
MatterCenterConfig,RowKey201,Header,ContextualHelpAltText,Contextual Help
MatterCenterConfig,RowKey202,Header,ContextualHelpFlyoutAltText,Close flyout
MatterCenterConfig,RowKey203,Header,CloseTitle,Close
MatterCenterConfig,RowKey204,Header,DashboardMenuImageUpperCaption,Matter Center
MatterCenterConfig,RowKey205,Header,DashboardMenuImageLowerCaption,for Office 365
MatterCenterConfig,RowKey206,Header,ImageOpenHamburgerTitle,View links
MatterCenterConfig,RowKey207,Header,DashboardHeaderSearchPlaceholderText,Search SharePoint
MatterCenterConfig,RowKey208,Header,DashboardSearchIconTitle,Search
MatterCenterConfig,RowKey209,Header,HamburgerMenuOption3Text,Settings
MatterCenterConfig,RowKey210,Header,FooterMenuOption4Text,Microsoft
MatterCenterConfig,RowKey211,Header,FooterMenuOption1Text,Feedback & Support
MatterCenterConfig,RowKey212,Header,FooterMenuOption2Text,Privacy & Cookies
MatterCenterConfig,RowKey213,Header,FooterMenuOption3Text,Terms of use
MatterCenterConfig,RowKey214,Header,ProfilePictureLabelText,Profile Picture
MatterCenterConfig,RowKey215,Header,LabelSingOutText,Sign Out
MatterCenterConfig,RowKey216,Header,ImageCloseHamburgerTitle,Close
MatterCenterConfig,RowKey226,MatterDashboard,LinkImageLoadingTitle,Matter Center Home
MatterCenterConfig,RowKey227,MatterDashboard,ImageLoadingAltText,Matter Center
MatterCenterConfig,RowKey228,MatterDashboard,ImageCloseTitle,Close
MatterCenterConfig,RowKey229,MatterDashboard,AttachmentLoadingText,Loading...
MatterCenterConfig,RowKey230,MatterDashboard,SearchTextboxPlaceholderText,"Search by document name, document ID, or keyword"
MatterCenterConfig,RowKey231,MatterDashboard,ImageAdvanceSearchAltText,Drop Down
MatterCenterConfig,RowKey232,MatterDashboard,ImageAdvanceSearchTitle,Advanced search
MatterCenterConfig,RowKey233,MatterDashboard,AdvSearchLabel1Text,Clients
MatterCenterConfig,RowKey234,MatterDashboard,AdvSearchTextbox1PlaceholderText,Enter or select a client
MatterCenterConfig,RowKey235,MatterDashboard,AdvSearchSelectAllLinkText,Select All
MatterCenterConfig,RowKey236,MatterDashboard,AdvSearchSelectNoneLinkText,Select None
MatterCenterConfig,RowKey237,MatterDashboard,AdvSearchbuttonOkText,Ok
MatterCenterConfig,RowKey238,MatterDashboard,AdvSearchbuttonCancelText,Cancel
MatterCenterConfig,RowKey239,MatterDashboard,AdvSearchLabel2Text,Practice Group
MatterCenterConfig,RowKey240,MatterDashboard,AdvSearchTextbox2PlaceholderText,Enter or select a practice group
MatterCenterConfig,RowKey241,MatterDashboard,AdvSearchLabel3Text,Area of Law
MatterCenterConfig,RowKey242,MatterDashboard,AdvSearchTextbox3PlaceholderText,Enter or select an area of law
MatterCenterConfig,RowKey243,MatterDashboard,AdvSearchLabel4Text,Date
MatterCenterConfig,RowKey244,MatterDashboard,AdvSearchTextbox4PlaceholderText,From
MatterCenterConfig,RowKey245,MatterDashboard,AdvSearchTextbox5PlaceholderText,To
MatterCenterConfig,RowKey246,MatterDashboard,AdvSearchButtonSearchText,Search
MatterCenterConfig,RowKey247,MatterDashboard,Tab1HeaderText,My matters
MatterCenterConfig,RowKey248,MatterDashboard,Tab2HeaderText,All matters
MatterCenterConfig,RowKey249,MatterDashboard,Tab3HeaderText,Pinned matters
MatterCenterConfig,RowKey250,MatterDashboard,ButtonExportText,Export
MatterCenterConfig,RowKey251,MatterDashboard,LabelSortByText,Sort by:
MatterCenterConfig,RowKey252,MatterDashboard,DrpDownOption1Text,None
MatterCenterConfig,RowKey253,MatterDashboard,DrpDownOption2Text,Alphabetical
MatterCenterConfig,RowKey254,MatterDashboard,DrpDownOption3Text,Created date
MatterCenterConfig,RowKey255,MatterDashboard,NoSearchResultMsgText,No results found.
MatterCenterConfig,RowKey256,MatterDashboard,Button1DuplicateContentTitle,Matter Center will compare all content and data associated with the two documents. Navigating away from this screen will cancel the content check.
MatterCenterConfig,RowKey257,MatterDashboard,Button1DuplicateContentText,Perform content check
MatterCenterConfig,RowKey258,MatterDashboard,Button2SaveLatestVersionTitle,The file will be saved as the latest version of the existing document that has same title. Matter Center will retain all prior versions of the document.
MatterCenterConfig,RowKey259,MatterDashboard,Button2SaveLatestVersionText,Save as latest version
MatterCenterConfig,RowKey260,MatterDashboard,Button3AppendDateTitle,"The file will be saved as new, separate document with the current date and time added to the end of the file name."
MatterCenterConfig,RowKey261,MatterDashboard,Button3AppendDateText,Append date to file name and save
MatterCenterConfig,RowKey262,MatterDashboard,Button4CancelUploadTitle,This document will not be uploaded and you will return to the previous screen.
MatterCenterConfig,RowKey263,MatterDashboard,Button4CancelUploadText,Cancel upload
MatterCenterConfig,RowKey264,MatterDashboard,Image1ContentCheckText,Checking content
MatterCenterConfig,RowKey265,MatterDashboard,UploadCompleteLabel1Text,Upload complete.
MatterCenterConfig,RowKey266,MatterDashboard,CloseIconText,X
MatterCenterConfig,RowKey267,MatterDashboard,AttachmentPopupHeaderText,Drag and drop items to folders on the right
MatterCenterConfig,RowKey268,MatterDashboard,AttachmentPopupHeaderItem1Text,Items
MatterCenterConfig,RowKey269,MatterDashboard,AttachmentPopupHeaderItem2Text,Folders
MatterCenterConfig,RowKey270,MatterDashboard,AttachmentEditImageTitle,Edit attachment name
MatterCenterConfig,RowKey271,MatterDashboard,AttachmentEditImageAltText,Edit
MatterCenterConfig,RowKey272,MatterDashboard,AttachmentSaveImageTitle,Save attachment name
MatterCenterConfig,RowKey273,MatterDashboard,AttachmentSaveImageText,Save
MatterCenterConfig,RowKey274,MatterDashboard,AttachmentUploadSuccessfullyImageAltText,Uploaded successfully
MatterCenterConfig,RowKey275,MatterDashboard,AttachmentIconImageAltText,attachment icon
MatterCenterConfig,RowKey276,MatterDashboard,AttachmentTestTitle,Test attachments
MatterCenterConfig,RowKey277,MatterDashboard,AttachmentEmptyText,No files uploaded
MatterCenterConfig,RowKey278,MatterDashboard,AttachmentPopupFooterImageCapetion,You can also drag and drop files from your desktop.
MatterCenterConfig,RowKey279,MatterDashboard,MattersPreLoadingMsgText,Please wait while the Matters load.
MatterCenterConfig,RowKey280,MatterDashboard,GridColumn1Header,Matter
MatterCenterConfig,RowKey281,MatterDashboard,GridColumn2Header,Client
MatterCenterConfig,RowKey282,MatterDashboard,GridColumn3Header,Client.Matter ID
MatterCenterConfig,RowKey283,MatterDashboard,GridColumn4Header,Modified Date
MatterCenterConfig,RowKey284,MatterDashboard,GridColumn5Header,Responsible attorney
MatterCenterConfig,RowKey285,MatterDashboard,AdvSearchLabel1InternalFuncParamText,client
MatterCenterConfig,RowKey286,MatterDashboard,AdvSearchLabel2InternalFuncParamText,level1
MatterCenterConfig,RowKey287,MatterDashboard,AdvSearchLabel3InternalFuncParamText,level2
MatterCenterConfig,RowKey297,Matters,EllipsisLink5Text,Unpin this matter
MatterCenterConfig,RowKey298,Matters,AttachmentEditImageTitle,Edit attachment name
MatterCenterConfig,RowKey299,Matters,AttachmentEditImageAltText,Edit
MatterCenterConfig,RowKey300,Matters,AttachmentSaveImageTitle,Save attachment name
MatterCenterConfig,RowKey301,Matters,AttachmentSaveImageText,Save
MatterCenterConfig,RowKey302,Matters,AttachmentUploadSuccessfullyImageAltText,Uploaded successfully
MatterCenterConfig,RowKey303,Matters,AttachmentIconImageAltText,attachment icon
MatterCenterConfig,RowKey304,Matters,AttachmentTestTitle,Test attachments
MatterCenterConfig,RowKey305,Matters,AttachmentEmptyText,No files uploaded
MatterCenterConfig,RowKey306,Matters,AttachmentBreadcrumAltText,Root
MatterCenterConfig,RowKey307,Matters,AttachmentFolderAltText,Documents
MatterCenterConfig,RowKey308,Matters,FilterSearchPlaceholderText,Search
MatterCenterConfig,RowKey309,Matters,ClearFilterText,Clear filters from
MatterCenterConfig,RowKey310,Matters,NoFilterMatchMsgTitle,There are no items that match this filter
MatterCenterConfig,RowKey311,Matters,NoFilterMatchMsgText,There are no items that match this filter
MatterCenterConfig,RowKey312,Matters,ImageCloseText,Close
MatterCenterConfig,RowKey313,Matters,ImageClearTitle,Clear
MatterCenterConfig,RowKey314,Matters,ImageClearAltText,Clear filters
MatterCenterConfig,RowKey315,Matters,ClearFilterFromLabelText,Clear filters from
MatterCenterConfig,RowKey316,Matters,ImageWarningAltText,Warning Message
MatterCenterConfig,RowKey317,Matters,Button1DuplicateContentTitle,Matter Center will compare all content and data associated with the two documents. Navigating away from this screen will cancel the content check.
MatterCenterConfig,RowKey318,Matters,Button1DuplicateContentText,Perform content check
MatterCenterConfig,RowKey319,Matters,Button2SaveLatestVersionTitle,The file will be saved as the latest version of the existing document that has same title. Matter Center will retain all prior versions of the document.
MatterCenterConfig,RowKey320,Matters,Button2SaveLatestVersionText,Save as latest version
MatterCenterConfig,RowKey321,Matters,Button3AppendDateTitle,"The file will be saved as new, separate document with the current date and time added to the end of the file name."
MatterCenterConfig,RowKey322,Matters,Button3AppendDateText,Append date to file name and save
MatterCenterConfig,RowKey323,Matters,Button4CancelUploadTitle,This document will not be uploaded and you will return to the previous screen.
MatterCenterConfig,RowKey324,Matters,Button4CancelUploadText,Cancel upload
MatterCenterConfig,RowKey325,Matters,Button5OkTitle,This document will not be uploaded and you will return to the previous screen.
MatterCenterConfig,RowKey326,Matters,Button5OkText,Ok
MatterCenterConfig,RowKey327,Matters,Image1ContentCheckText,Checking content
MatterCenterConfig,RowKey328,Matters,Button6CancelText,Cancel
MatterCenterConfig,RowKey329,Matters,UploadCompleteLabel1Text,Upload complete.
MatterCenterConfig,RowKey330,Matters,CloseIconText,x
MatterCenterConfig,RowKey331,Matters,StartDatePlaceHolder,Start mm/dd/yyyy
MatterCenterConfig,RowKey332,Matters,EndDatePlaceHolder,End mm/dd/yyyy
MatterCenterConfig,RowKey333,Matters,GridColumn8Header,Area of Law
MatterCenterConfig,RowKey334,Matters,AttachmentLoadingText,Loading...
MatterCenterConfig,RowKey335,Matters,GridColumn5Header,Responsible Attorney
MatterCenterConfig,RowKey336,Matters,GridColumn6Header,Sub Area of Law
MatterCenterConfig,RowKey337,Matters,GridColumn7Header,Open Date
MatterCenterConfig,RowKey338,Matters,Dropdown1Item1,All Matters
MatterCenterConfig,RowKey339,Matters,Dropdown1Item2,My Matters
MatterCenterConfig,RowKey340,Matters,Dropdown1Item3,Pinned Matters
MatterCenterConfig,RowKey341,Matters,SearchPlaceholderText,"Search by ID, or matter or client name"
MatterCenterConfig,RowKey342,Matters,NoDataSearchText,"Nothing matches your search term or the filter you selected. Please try again.<br>If you applied a filter, remove it to get back to your list.<br>Search suggestions:<br><ul><li>Make sure all words are spelled correctly</li><li>Try different keywords</li><li>Try searching by the matter name or client name</li><li>Try more general search terms</li></ul>"
MatterCenterConfig,RowKey343,Matters,GridColumn1Header,Matter
MatterCenterConfig,RowKey344,Matters,GridColumn2Header,Client
MatterCenterConfig,RowKey345,Matters,GridColumn3Header,Client.MatterID
MatterCenterConfig,RowKey346,Matters,GridColumn4Header,Modified Date
MatterCenterConfig,RowKey347,Matters,HeaderText,All Matters
MatterCenterConfig,RowKey348,Matters,EllipsisLink1Text,Upload to this Matter
MatterCenterConfig,RowKey349,Matters,EllipsisLink2Text,View Matter Details
MatterCenterConfig,RowKey350,Matters,EllipsisLink3Text,Go to Matter OneNote
MatterCenterConfig,RowKey351,Matters,EllipsisLink4Text,Pin this matter
MatterCenterConfig,RowKey352,Matters,FlyoutButton1Text,View matter details
MatterCenterConfig,RowKey353,Matters,FlyoutButton2Text,Upload to a matter
MatterCenterConfig,RowKey354,Matters,AttachmentPopupHeaderText,Drag and drop items to folders on the right
MatterCenterConfig,RowKey355,Matters,AttachmentPopupFooterImageCapetion,You can also drag and drop files from your desktop.
MatterCenterConfig,RowKey356,Matters,AttachmentPopupHeaderItem1Text,Items
MatterCenterConfig,RowKey357,Matters,AttachmentPopupHeaderItem2Text,Folders
MatterCenterConfig,RowKey358,Matters,AttachmentPopupHeaderText,Upload to a matter
MatterCenterConfig,RowKey371,Navigation,MenuItem1LinkTitle,Home
MatterCenterConfig,RowKey372,Navigation,MenuItem1LinkTitle,Search matters
MatterCenterConfig,RowKey373,Navigation,MenuItem1LinkTitle,Search documents
MatterCenterConfig,RowKey374,Navigation,NameTitle,Matter
MatterCenterConfig,RowKey375,Navigation,HeaderBarLink1Title,Learn more about matter center
MatterCenterConfig,RowKey376,Navigation,HeaderBarLink2Title,Remove this section
MatterCenterConfig,RowKey377,Navigation,MenuImageOpenTitle,Open App Switcher
MatterCenterConfig,RowKey378,Navigation,MenuImageCloseTitle,Close App Switcher
MatterCenterConfig,RowKey379,Navigation,HeaderBarLink1Text,LearnMore
MatterCenterConfig,RowKey380,Navigation,HomeMenuText,Home
MatterCenterConfig,RowKey381,Navigation,Image1Title,Search matters
MatterCenterConfig,RowKey382,Navigation,Image2Title,Search documents
MatterCenterConfig,RowKey383,Navigation,HelpRequesURL,https://msmatter.sharepoint.com/sites/catalog
MatterCenterConfig,RowKey384,Navigation,FooterLabel,Questions? Contact
MatterCenterConfig,RowKey385,Navigation,MenuImageCaption,menu
MatterCenterConfig,RowKey386,Navigation,MenuImageTitle,Matter center menu
MatterCenterConfig,RowKey387,Navigation,MenuItem1LinkText,Home
MatterCenterConfig,RowKey388,Navigation,MenuItem2LinkText,Matters
MatterCenterConfig,RowKey389,Navigation,MenuItem3LinkText,Documents
MatterCenterConfig,RowKey390,Navigation,LogoImageTitle,Matter center home
MatterCenterConfig,RowKey391,Navigation,ContextualHelpImageTitle,Matter center help
MatterCenterConfig,RowKey392,Navigation,ContextualHelpLabel1,Get to know this view
MatterCenterConfig,RowKey393,Navigation,ContextualHelpLink1Text,Home in Outlook and Word
MatterCenterConfig,RowKey394,Navigation,ContextualHelpLink1URL,https://microsoft.sharepoint.com/teams/celapcconfig/Shared%20Documents/CELA%20Project%20Center%20End%20User%20Guide_24.pdf#Home_in_Outlook_and_Word
MatterCenterConfig,RowKey395,Navigation,ContextualHelpLabel2,How do I get Project Center on my device?
MatterCenterConfig,RowKey396,Navigation,ContextualHelpLink2URL,https://microsoft.sharepoint.com/teams/celapcconfig/Shared%20Documents/CELA%20Project%20Center%20End%20User%20Guide_24.pdf#Enabling_Project_Center
MatterCenterConfig,RowKey397,Navigation,ContextualHelpFooterLink1Label,Matter Center Aisling Support
MatterCenterConfig,RowKey398,Navigation,MatterCenterSupportLink,mailto:support@supportsite.com
MatterCenterConfig,RowKey399,Navigation,ContextualHelpFooterLink1Title,Write an email to support
MatterCenterConfig,RowKey400,Navigation,ContextualHelpHeader,Matter Center For Outlook
MatterCenterConfig,RowKey401,Navigation,ContextualHelpFooterLabel,Questions? Contact
MatterCenterConfig,RowKey402,Navigation,HeaderBarLabel,"Welcome to Matter Center! Upload, share, and save your documents here."
MatterCenterConfig,RowKey403,Navigation,Image1Caption,Matters
MatterCenterConfig,RowKey404,Navigation,Image2Caption,Documents
MatterCenterConfig,RowKey405,Navigation,HeaderBarLink1URL,http://www.microsoft.com/mattercenter
MatterCenterConfig,RowKey406,Navigation,HeaderBarLink2Text,dismiss
MatterCenterConfig,RowKey407,Navigation,Image3Caption,Upload attachments
MatterCenterConfig,RowKey408,Navigation,Image4Caption,Create a new matter
MatterCenterConfig,RowKey409,Navigation,Image5Caption,Go to Matter Center Home
MatterCenterConfig,RowKey410,Navigation,FooterLink1Title,Matter Center Support
MatterCenterConfig,RowKey411,Navigation,FooterLink1Text,Matter Center Support
MatterCenterConfig,RowKey412,Navigation,FooterLink1URL,mailto:lcaweb2@microsoft.com?subject=CELA Project Center Feedback and Support request
MatterCenterConfig,RowKey413,Navigation,Image3Title,Upload documents to a matter
MatterCenterConfig,RowKey414,Navigation,Image4Title,Create a new matter site
MatterCenterConfig,RowKey415,Navigation,Image5Title,Go to the web home page
MatterCenterConfig,RowKey425,Settings,Label1HeaderText,Settings
MatterCenterConfig,RowKey426,Settings,Label2Text,Click on a name to configure matter creation options for that client.
MatterCenterConfig,RowKey427,Settings,Label3Text,Client Name
MatterCenterConfig,RowKey429,Settings,Label5Section1HeaderText,Select default values
MatterCenterConfig,RowKey430,Settings,Label6Section1HeaderText,Default selections will be editable when a new matter is created.
MatterCenterConfig,RowKey431,Settings,Label7DefaultValue1TitleText,Matter Name
MatterCenterConfig,RowKey432,Settings,Label8DefaultValue1TitleDescription,"Enter default text to appear when a new matter is created. For example, a matter name prefix or suffix, or naming convention instructions.This text can be removed or changed when a new matter is created."
MatterCenterConfig,RowKey433,Settings,Label9DefaultValue2TitleText,Matter ID
MatterCenterConfig,RowKey434,Settings,Label10DefaultValue2TitleDescription,"ID numbers must be manually entered when a new matter is created. Enter default text, such as ID prefix or suffix, or numbering instructions. This text can be removed or changed when a new matter is created."
MatterCenterConfig,RowKey435,Settings,Label11DefaultValue3HeaderText,"Set a default matter type by selecting a Practice group, Area of law, and Sub areas of law below."
MatterCenterConfig,RowKey436,Settings,Label12DefaultValue3TitleText,Default to restricting access to an assigned team?
MatterCenterConfig,RowKey437,Settings,Label13DefaultValue3TitleDescription,"This can be changed when a new matter is created. If you select yes, you can either define a default team below or leave the team permission blank."
MatterCenterConfig,RowKey438,Settings,Radio1Option1Text,Yes
MatterCenterConfig,RowKey439,Settings,Radio1Option2Text,No
MatterCenterConfig,RowKey440,Settings,Label14DefaultValue4HeaderText,Assign team permission
MatterCenterConfig,RowKey441,Settings,Label15DefaultValue4Text,Name
MatterCenterConfig,RowKey442,Settings,Label16DefaultValue4Text,Role
MatterCenterConfig,RowKey443,Settings,Label17DefaultValue4Text,Permission level
MatterCenterConfig,RowKey444,Settings,Textbox1DefaultValue4PlaceholdertText,Enter and select names
MatterCenterConfig,RowKey445,Settings,Label18DefaultValue4NoResultsFoundText,No Results Found
MatterCenterConfig,RowKey446,Settings,Label19DefaultValue4AddMoreText,Add More
MatterCenterConfig,RowKey447,Settings,Label20DefaultValue5Text,Include email notification?
MatterCenterConfig,RowKey448,Settings,Label21DefaultValue6Text,Include calendar?
MatterCenterConfig,RowKey449,Settings,Label22DefaultValue7Text,Include tasks?
MatterCenterConfig,RowKey450,Settings,Label23DefaultValue8Text,Include RSS Feeds?
MatterCenterConfig,RowKey451,Settings,Label24Section2HeaderText,Set matter options
MatterCenterConfig,RowKey452,Settings,Label25Section2HeaderText,These settings will not be editable when a new matter is created.
MatterCenterConfig,RowKey453,Settings,Label26Section2Text,Make the matter description field required?
MatterCenterConfig,RowKey454,Settings,Label27Section2DescriptionText,Selecting No will allow new matters to be saved without a description
MatterCenterConfig,RowKey455,Settings,Label28Section2Text,Do matters need conflict check data?
MatterCenterConfig,RowKey456,Settings,Label29Section2DescriptionText,Selecting No will remove the conflict check declaration fields from new matters
MatterCenterConfig,RowKey457,Settings,Label30Section2Text,Show or hide role?
MatterCenterConfig,RowKey458,Settings,Label31Section2Text,Show matter id?
MatterCenterConfig,RowKey459,Settings,Label32Section2Text,Matter Id Configuration
MatterCenterConfig,RowKey460,Settings,Radio2Option1Text,Guid
MatterCenterConfig,RowKey461,Settings,Radio2Option2Text,Date Time
MatterCenterConfig,RowKey462,Settings,Radio2Option3Text,Custom
MatterCenterConfig,RowKey463,Settings,ButtonSaveText,Save
MatterCenterConfig,RowKey464,Settings,ButtonCancelText,Cancel
MatterCenterConfig,RowKey465,Settings,ImageLoadingAltText,Loading...
MatterCenterConfig,RowKey466,Settings,Label4Selection1HeaderText,"This page shows the current settings for this client's new matters. The first section allows you to set new matter default selections, which can be changed when a matter is created. The second section defines settings that can not be changed when a new matter is created. No changes are required, and any changes made will not affect existing matters."
MatterCenterConfig,RowKey467,Settings,DeleteTitleText,Delete
MatterCenterConfig,RowKey468,Settings,Radio2Option2ValueText,DateTime
MatterCenterConfig,RowKey469,Settings,Label33Section2Text,Your changes have been saved. Go back to
MatterCenterConfig,RowKey470,Settings,Label34Section2Text,Clients
MatterCenterConfig,RowKey481,MatterLanding,Label1Tab1HeaderText,Matter Profile
MatterCenterConfig,RowKey482,MatterLanding,Label2Tab2HeaderText,Matter Description
MatterCenterConfig,RowKey483,MatterLanding,Label3Tab1Column1Text,Client Name
MatterCenterConfig,RowKey484,MatterLanding,Label4Tab1Column2Text,Client & Matter ID
MatterCenterConfig,RowKey485,MatterLanding,Label5Tab1Column3Text,Practice Group
MatterCenterConfig,RowKey486,MatterLanding,Label6Tab1Column4Text,Area of Law
MatterCenterConfig,RowKey487,MatterLanding,Label7Tab1Column5Text,Responsible Attorney
MatterCenterConfig,RowKey488,MatterLanding,Label8Tab1Section2HeaderText,Matter Library
MatterCenterConfig,RowKey489,MatterLanding,MenuImageUpperCaption,Matter Center
MatterCenterConfig,RowKey490,MatterLanding,MenuImageLowerCaption,for Office 365
MatterCenterConfig,RowKey491,MatterLanding,Menu1Option1Text,Matters
MatterCenterConfig,RowKey492,MatterLanding,Menu1Option2Text,Documents
MatterCenterConfig,RowKey493,MatterLanding,Menu1Option3Text,Settings
MatterCenterConfig,RowKey502,DocumentDetails,Label1HeaderText,File Name
MatterCenterConfig,RowKey503,DocumentDetails,Label2Section2HeaderText,File Properties
MatterCenterConfig,RowKey504,DocumentDetails,Label3Section2Column1Text,File title
MatterCenterConfig,RowKey505,DocumentDetails,Label4Section2Column2Text,Client
MatterCenterConfig,RowKey506,DocumentDetails,Label5Section2Column3Text,Matter
MatterCenterConfig,RowKey507,DocumentDetails,Label6Section2Column4Text,Client.MatterID
MatterCenterConfig,RowKey508,DocumentDetails,Label7Section2Column5Text,Document ID
MatterCenterConfig,RowKey509,DocumentDetails,Label8Section2Column6Text,Checked out to
MatterCenterConfig,RowKey510,DocumentDetails,Label9Section2Column7Text,Author
MatterCenterConfig,RowKey511,DocumentDetails,Label10Section2Column8Text,Date created
MatterCenterConfig,RowKey512,DocumentDetails,Label11Section2Column9Text,Practice group
MatterCenterConfig,RowKey513,DocumentDetails,Label12Section2Column10Text,Area of law:
MatterCenterConfig,RowKey514,DocumentDetails,Label13Section2Column11Text,Sub area of law
MatterCenterConfig,RowKey515,DocumentDetails,Label14Section2Column12Text,File type
MatterCenterConfig,RowKey516,DocumentDetails,Label15Section2Column13Text,File size
MatterCenterConfig,RowKey517,DocumentDetails,Label16Section2Column14Text,File access
MatterCenterConfig,RowKey518,DocumentDetails,Label17Section2HeaderText,Version history
MatterCenterConfig,RowKey519,DocumentDetails,Label18Section2Column1Text,Version
MatterCenterConfig,RowKey520,DocumentDetails,Label19Section2Column2Text,Modified
MatterCenterConfig,RowKey521,DocumentDetails,Label20Section2Column3Text,Modified By
MatterCenterConfig,RowKey522,DocumentDetails,Label21MenuHeaderOption1Text,open
MatterCenterConfig,RowKey523,DocumentDetails,Label22MenuHeaderOption2Text,download
MatterCenterConfig,RowKey524,DocumentDetails,Label23MenuHeaderOption3Text,share
MatterCenterConfig,RowKey525,DocumentDetails,Label24MenuHeaderOption4Text,check in
MatterCenterConfig,RowKey526,DocumentDetails,Label25MenuHeaderOption5Text,check out
MatterCenterConfig,RowKey527,DocumentDetails,Label26MenuHeaderOption6Text,send link
MatterCenterConfig,RowKey528,DocumentDetails,Label27MenuHeaderOption7Text,pin
MatterCenterConfig,RowKey529,DocumentDetails,Label28MenuHeaderOption8Text,unpin
MatterCenterConfig,RowKey530,DocumentDetails,Label1TabTitleText,Document Details
MatterCenterConfig,RowKey531,DocumentDetails,Link1ErrorDetailsCaptionText,Click here for details
MatterCenterConfig,RowKey532,DocumentDetails,Link2AllDocumentText,Go to all documents
MatterCenterConfig,RowKey533,DocumentDetails,LabelNoPreviewText,There is no preview for this document
MatterCenterConfig,RowKey534,DocumentDetails,ImgNoPreviewSuppoertText,Preview not supported...
MatterCenterConfig,RowKey538,DocumentDetails,Link3ViewMoreText,View More
MatterCenterConfig,RowKey540,MatterLanding,ErrMsg1NoTask,There are no tasks created
MatterCenterConfig,RowKey541,MatterLanding,ErrMsg2FetchTask,Error occurred while trying to fetch tasks
MatterCenterConfig,RowKey542,MatterLanding,ErrMsg3CreateEvent,Error occurred while trying to fetch events
MatterCenterConfig,RowKey543,MatterLanding,ErrMsg4ActiveEvents,There are no active events
MatterCenterConfig,RowKey544,MatterLanding,ErrMsg5NoMatterDescription,There is no description for this matter
MatterCenterConfig,RowKey545,MatterLanding,ErrMsg6ForPinUnpinMatters,Error while trying to retrieve matter pin/unpin status
MatterCenterConfig,RowKey546,MatterLanding,ErrMsg7MatterInformation,Error while trying to retrieve matter information
MatterCenterConfig,RowKey547,MatterLanding,ErrMsg8MatterDescription,Error while trying to retrieve matter description
MatterCenterConfig,RowKey548,MatterLanding,ErrMsg9NoPinUnpinMatter,Error while trying to pin/unpin matter
MatterCenterConfig,RowKey549,MatterLanding,Label1MenuText,Matter Name
MatterCenterConfig,RowKey550,MatterLanding,Label9Section1Text,Matter Id
MatterCenterConfig,RowKey551,MatterLanding,Label10Section1Text,Client Id
MatterCenterConfig,RowKey552,MatterLanding,Label11Section1Text,Description
MatterCenterConfig,RowKey553,MatterLanding,Label12ManageUserTitleText,Manage users
MatterCenterConfig,RowKey554,MatterLanding,Label13GotoOnnoteTitleText,Go to Matter OneNote
MatterCenterConfig,RowKey555,MatterLanding,Label14TaskeTitleText,Task
MatterCenterConfig,RowKey556,MatterLanding,Label15CalenderTitleText,Calendar Events
MatterCenterConfig,RowKey557,MatterLanding,Label16RSSFeedTitleText,Related News (RSS)
MatterCenterConfig,RowKey558,MatterLanding,Label17EditTitleText,View / Edit
MatterCenterConfig,RowKey561,MatterLanding,Label18MenuText,My Matters
MatterCenterConfig,RowKey562,MatterLanding,Label19Section4Text,Matter Library
MatterCenterConfig,RowKey570,DocumentDetails,Label135MenuHead,OneDrive
MatterCenterConfig,RowKey571,DocumentDetails,Label36MenuHeaderOption7Text,Send to OneDrive
1 PartitionKey RowKey ConfigGroup Key Value
2 MatterCenterConfig RowKey001 CreateMatter Tab1HeaderTitle Step 1: Select a client and provide basic information for your new matter.
3 MatterCenterConfig RowKey002 CreateMatter Tab2HeaderTitle Step 2: Confirm that a conflict check was conducted and specify who should be conflicted from or given access to this matter.
4 MatterCenterConfig RowKey003 CreateMatter Tab3HeaderTitle Step 3: When you've entered all relevant information for your new matter, create the matter and notify your team.
5 MatterCenterConfig RowKey004 CreateMatter ButtonNextText Next
6 MatterCenterConfig RowKey005 CreateMatter ButtonPreviousText Previous
7 MatterCenterConfig RowKey006 CreateMatter ButtonCreateText Create
8 MatterCenterConfig RowKey007 CreateMatter Tab2NoSearchResultText No Results Found
9 MatterCenterConfig RowKey008 CreateMatter Tab1Type1Header1Label1 Select a Practice Group
10 MatterCenterConfig RowKey009 CreateMatter Tab1Type1Footer1Label1 Please select primary matter type before you save.
11 MatterCenterConfig RowKey010 CreateMatter Tab1SiteColumn1Caption Area of Law
12 MatterCenterConfig RowKey011 CreateMatter Tab1SiteColumn2Caption Sub Area of Law (select matter type)
13 MatterCenterConfig RowKey012 CreateMatter Tab1SiteColumn3Caption Matter Type
14 MatterCenterConfig RowKey013 CreateMatter Tab1Type1Label1 select primary matter type
15 MatterCenterConfig RowKey014 CreateMatter Tab1ButtonAddTitle Add
16 MatterCenterConfig RowKey015 CreateMatter Tab1ButtonRemoveTitle Remove
17 MatterCenterConfig RowKey016 CreateMatter MenuImageTitle Matter Center menu
18 MatterCenterConfig RowKey017 CreateMatter MenuImageCaption menu
19 MatterCenterConfig RowKey018 CreateMatter Tab1ButtonCloseTitle Close
20 MatterCenterConfig RowKey019 CreateMatter Tab1ButtonSelectType Select Type
21 MatterCenterConfig RowKey020 CreateMatter Tab1ImageLoadingAltText Loading...
22 MatterCenterConfig RowKey021 CreateMatter MenuItem1LinkTitle Home
23 MatterCenterConfig RowKey022 CreateMatter MenuItem2LinkTitle Search matters
24 MatterCenterConfig RowKey023 CreateMatter MenuItem3LinkTitle Search documents
25 MatterCenterConfig RowKey024 CreateMatter MenuItem1LinkText Home
26 MatterCenterConfig RowKey025 CreateMatter MenuItem2LinkText Matters
27 MatterCenterConfig RowKey026 CreateMatter MenuItem3LinkText Documents
28 MatterCenterConfig RowKey027 CreateMatter ButtonSaveText Save
29 MatterCenterConfig RowKey028 CreateMatter MenuImageOpenTitle Open App Switcher
30 MatterCenterConfig RowKey029 CreateMatter MenuImageCloseTitle Close App Switcher
31 MatterCenterConfig RowKey030 CreateMatter ButtonDeleteText Delete
32 MatterCenterConfig RowKey031 CreateMatter Tab1LeftButtonAltText Left
33 MatterCenterConfig RowKey032 CreateMatter Tab1RighttButtonAltText Right
34 MatterCenterConfig RowKey033 CreateMatter Tab3SectionText You have entered all of the necessary information to create this matter. After you click Create and Notify, the matter will be created and all team members will receive an email containing a link to this matter's location.
35 MatterCenterConfig RowKey034 CreateMatter LabelNotificationPopupForExternalSharingText The following recipent is outside your organization. Would you still like to invite them to the Assigned Team?
36 MatterCenterConfig RowKey035 CreateMatter RemoveLinkText Remove
37 MatterCenterConfig RowKey036 CreateMatter ConfirmLinkText Confirm
38 MatterCenterConfig RowKey037 CreateMatter Tab1Dropdown1Label Client Name
39 MatterCenterConfig RowKey038 CreateMatter Tab1Header Open Matter
40 MatterCenterConfig RowKey039 CreateMatter Tab2Header Assign Permission
41 MatterCenterConfig RowKey040 CreateMatter Tab3Header Create and Notify
42 MatterCenterConfig RowKey041 CreateMatter Tab2Checkbox1Lebal Conflict check conducted (must be complete prior to provisioning matter)
43 MatterCenterConfig RowKey042 CreateMatter Tab2Textbox1Label Who conducted the conflict check?
44 MatterCenterConfig RowKey043 CreateMatter Tab2DateLabel Date Conducted
45 MatterCenterConfig RowKey044 CreateMatter Tab2RadioButton1Label Conflict Identified?
46 MatterCenterConfig RowKey045 CreateMatter Tab2RadioButton1Option1 Yes
47 MatterCenterConfig RowKey046 CreateMatter Tab2RadioButton1Option2 No
48 MatterCenterConfig RowKey047 CreateMatter Tab2Textbox2Label Conflicted Users
49 MatterCenterConfig RowKey048 CreateMatter Tab1Textbox1Label Client ID
50 MatterCenterConfig RowKey049 CreateMatter Tab2Textbox2PlaceHolder Enter and select names
51 MatterCenterConfig RowKey050 CreateMatter Tab2RadioButton2Label Would you like this matter to be secured only to the assigned team?
52 MatterCenterConfig RowKey051 CreateMatter Tab2RadioButton2Option1 Yes
53 MatterCenterConfig RowKey052 CreateMatter Tab2RadioButton2Option2 No
54 MatterCenterConfig RowKey053 CreateMatter Tab2TeamHeader Assign Team
55 MatterCenterConfig RowKey054 CreateMatter Tab2Textbox3Label Name
56 MatterCenterConfig RowKey055 CreateMatter Tab2Textbox3PlaceHolder Enter and select names
57 MatterCenterConfig RowKey056 CreateMatter Tab2Deopdown1Label Role
58 MatterCenterConfig RowKey057 CreateMatter Tab2Deopdown2Label Permission Level
59 MatterCenterConfig RowKey058 CreateMatter Tab2AddMoreHeaderLabel Add More Names
60 MatterCenterConfig RowKey059 CreateMatter Tab1Textbox2Label Matter Name
61 MatterCenterConfig RowKey060 CreateMatter Tab3CheckBox1Text Include calendar
62 MatterCenterConfig RowKey061 CreateMatter Tab3CheckBox2Text Include RSS Feeds
63 MatterCenterConfig RowKey062 CreateMatter Tab3CheckBox3Text Include email notification
64 MatterCenterConfig RowKey063 CreateMatter Tab3CheckBox4Text Include Tasks
65 MatterCenterConfig RowKey064 CreateMatter Tab3ButtonText Create and Notify
66 MatterCenterConfig RowKey065 CreateMatter Tab1Textbox2PlaceholderText Enter a name for this matter
67 MatterCenterConfig RowKey066 CreateMatter Tab1Textbox3Label Matter ID
68 MatterCenterConfig RowKey067 CreateMatter Tab1Textbox3PlaceholderText Enter a matter ID
69 MatterCenterConfig RowKey068 CreateMatter Tab1Textbox4Label Matter Description
70 MatterCenterConfig RowKey069 CreateMatter Tab1Textbox4PlaceholderText Enter a brief description of the matter
71 MatterCenterConfig RowKey070 CreateMatter Tab1Textbox5Label Matter Type (click Select to define the practice group and area of law)
72 MatterCenterConfig RowKey071 CreateMatter Tab1DrpDownLevel1DefaultSelectOption Select a practice group
73 MatterCenterConfig RowKey072 CreateMatter Tab1TermsSelectionSearchPlaceHolderText Search by typing
74 MatterCenterConfig RowKey073 CreateMatter Tab1LabelFinalTypeText MatterType
75 MatterCenterConfig RowKey074 CreateMatter Tab1LabelPrimaryTypeText Please select primary matter type
76 MatterCenterConfig RowKey075 CreateMatter Tab1LabelPrimaryTypeBeforeSaveText Please select primary matter type before you save.
77 MatterCenterConfig RowKey076 CreateMatter Tab1ButtonSaveSelectiponText Save Selections
78 MatterCenterConfig RowKey081 DocumentDashboard LinkImageLoadingTitle Matter Center Home
79 MatterCenterConfig RowKey082 DocumentDashboard ImageLoadingAltText Matter Center
80 MatterCenterConfig RowKey083 DocumentDashboard Image1EmailAttachmentText Email as attachment
81 MatterCenterConfig RowKey084 DocumentDashboard Image2EmailAttachmentLinkText Email as link
82 MatterCenterConfig RowKey085 DocumentDashboard Image3EmailRemovalAttachmentLinkText Remove attachment
83 MatterCenterConfig RowKey086 DocumentDashboard SearchDocumentPlaceholderText Search by document name, document ID, or keyword
84 MatterCenterConfig RowKey087 DocumentDashboard ImageAdvanceSearchAltText Drop Down
85 MatterCenterConfig RowKey088 DocumentDashboard ImageAdvanceSearchTitle Advanced search
86 MatterCenterConfig RowKey089 DocumentDashboard AdvSearchLabel1Text Clients
87 MatterCenterConfig RowKey090 DocumentDashboard AdvSearchLabel1FunctionParameterText client
88 MatterCenterConfig RowKey091 DocumentDashboard AdvSearchTextbox1PlaceholderText Enter or select a client
89 MatterCenterConfig RowKey092 DocumentDashboard AdvSearchSelectAllLinkText Select All
90 MatterCenterConfig RowKey093 DocumentDashboard AdvSearchSelectNoneLinkText Select None
91 MatterCenterConfig RowKey094 DocumentDashboard AdvSearchbuttonOkText Ok
92 MatterCenterConfig RowKey095 DocumentDashboard AdvSearchbuttonCancelText Cancel
93 MatterCenterConfig RowKey096 DocumentDashboard AdvSearchLabel2Text Author
94 MatterCenterConfig RowKey097 DocumentDashboard AdvSearchTextbox2PlaceholderText Document Author
95 MatterCenterConfig RowKey098 DocumentDashboard AdvSearchLabel3Text Date
96 MatterCenterConfig RowKey099 DocumentDashboard AdvSearchTextbox3PlaceholderText From
97 MatterCenterConfig RowKey100 DocumentDashboard AdvSearchTextbox4PlaceholderText To
98 MatterCenterConfig RowKey101 DocumentDashboard NoSearchResultMsgText No Results Found
99 MatterCenterConfig RowKey102 DocumentDashboard AdvSearchButtonSearchText Search
100 MatterCenterConfig RowKey103 DocumentDashboard Tab1HeaderText My documents
101 MatterCenterConfig RowKey104 DocumentDashboard Tab2HeaderText All documents
102 MatterCenterConfig RowKey105 DocumentDashboard Tab3HeaderText Pinned documents
103 MatterCenterConfig RowKey106 DocumentDashboard ImageMailCartIconTitle Review the contents of your mail cart and send the selected documents to your OneDrive or via email.
104 MatterCenterConfig RowKey107 DocumentDashboard ImageMailCartIconAltText Mail Cart
105 MatterCenterConfig RowKey108 DocumentDashboard LabelSortByText Sort by:
106 MatterCenterConfig RowKey109 DocumentDashboard LabelSortByTitle Sort By
107 MatterCenterConfig RowKey110 DocumentDashboard DrpDownOption1Text None
108 MatterCenterConfig RowKey111 DocumentDashboard DrpDownOption2Text Alphabetical
109 MatterCenterConfig RowKey112 DocumentDashboard DrpDownOption3Text Created date
110 MatterCenterConfig RowKey113 DocumentDashboard DrpDownOption4Text Modified date
111 MatterCenterConfig RowKey114 DocumentDashboard MattersPreLoadingMsgText Please wait while the Documents load.
112 MatterCenterConfig RowKey115 DocumentDashboard AttachmentLoadingText Loading...
113 MatterCenterConfig RowKey116 DocumentDashboard GridColumn1Header Document
114 MatterCenterConfig RowKey117 DocumentDashboard GridColumn2Header Client
115 MatterCenterConfig RowKey118 DocumentDashboard GridColumn3Header Author
116 MatterCenterConfig RowKey119 DocumentDashboard GridColumn4Header Modified Date
117 MatterCenterConfig RowKey120 DocumentDashboard GridColumn5Header Document ID
118 MatterCenterConfig RowKey121 DocumentDashboard GridColumn6Header Version
119 MatterCenterConfig RowKey131 Documents EllipsisLink4Text Unpin this Document
120 MatterCenterConfig RowKey132 Documents StartDatePlaceHolder Start mm/dd/yyyy
121 MatterCenterConfig RowKey133 Documents EndDatePlaceHolder End mm/dd/yyyy
122 MatterCenterConfig RowKey134 Documents ImageWarningTitle Warning
123 MatterCenterConfig RowKey135 Documents ImageWarningAltText Warning icon
124 MatterCenterConfig RowKey136 Documents AttachmentSuccessfullyMsgText Documents successfully attached.
125 MatterCenterConfig RowKey137 Documents AttachmentProgressingText Attaching
126 MatterCenterConfig RowKey138 Documents AttachmentProgressingWarningText Do not close Matter Center until all documents are attached.
127 MatterCenterConfig RowKey139 Documents AttachmentLoadingText Loading...
128 MatterCenterConfig RowKey140 Documents ButtonOkText Ok
129 MatterCenterConfig RowKey141 Documents ImageClearTitle Clear
130 MatterCenterConfig RowKey142 Documents LabelCloseText Close
131 MatterCenterConfig RowKey143 Documents ClearFilterFromLabelText Clear filters from
132 MatterCenterConfig RowKey144 Documents NoFilterMatchMsgTitle There are no items that match this filter
133 MatterCenterConfig RowKey145 Documents NoFilterMatchMsgText There are no items that match this filter
134 MatterCenterConfig RowKey146 Documents LabelDocumentText documents...
135 MatterCenterConfig RowKey147 Documents LabelOfText of
136 MatterCenterConfig RowKey148 Documents ImageClearAltText Clear filters
137 MatterCenterConfig RowKey149 Documents FilterSearchPlaceholderText Search
138 MatterCenterConfig RowKey150 Documents EllipsisDocTypeIconAltText Document type icon
139 MatterCenterConfig RowKey151 Documents FlyoutLable1Text Matter
140 MatterCenterConfig RowKey152 Documents FlyoutLable2Text Document ID
141 MatterCenterConfig RowKey153 Documents GridColumn8Header Created Date
142 MatterCenterConfig RowKey154 Documents Dropdown1Item1 All Documents
143 MatterCenterConfig RowKey155 Documents Dropdown1Item2 My Documents
144 MatterCenterConfig RowKey156 Documents Dropdown1Item3 Pinned Documents
145 MatterCenterConfig RowKey157 Documents SearchPlaceholderText Search by ID, or document or client name
146 MatterCenterConfig RowKey158 Documents NoDataSearchText Nothing matches your search term or the filter you selected. Please try again.<br>If you applied a filter, remove it to get back to your list.<br>Search suggestions:<br><ul><li>Make sure all words are spelled correctly</li><li>Try different keywords</li><li>Try searching by the matter name or client name</li><li>Try more general search terms</li></ul>
147 MatterCenterConfig RowKey159 Documents GridColumn1Header Document
148 MatterCenterConfig RowKey160 Documents GridColumn2Header Client
149 MatterCenterConfig RowKey161 Documents GridColumn3Header Client.MatterID
150 MatterCenterConfig RowKey162 Documents GridColumn4Header Modified Date
151 MatterCenterConfig RowKey163 Documents GridColumn5Header Author
152 MatterCenterConfig RowKey164 Documents GridColumn6Header Document Version
153 MatterCenterConfig RowKey165 Documents GridColumn7Header Checked out to
154 MatterCenterConfig RowKey166 Documents HeaderText All Documents
155 MatterCenterConfig RowKey167 Documents EllipsisLink1Text Open this Document
156 MatterCenterConfig RowKey168 Documents EllipsisLink2Text View Matter Details
157 MatterCenterConfig RowKey169 Documents EllipsisLink3Text Pin this Document
158 MatterCenterConfig RowKey170 Documents FlyoutButton1Text Open document
159 MatterCenterConfig RowKey171 Documents FlyoutButton2Text View document details
160 MatterCenterConfig RowKey181 Header MenuImage1Title Matter center menu
161 MatterCenterConfig RowKey182 Header MenuImage1Caption menu
162 MatterCenterConfig RowKey183 Header MenuImage1OpenTitle Open App Switcher
163 MatterCenterConfig RowKey184 Header MenuImage1CloseTitle Close App Switcher
164 MatterCenterConfig RowKey185 Header Menu1Option1Title Home
165 MatterCenterConfig RowKey186 Header Menu1Option2Title Search matters
166 MatterCenterConfig RowKey187 Header Menu1Option3Title Search documents
167 MatterCenterConfig RowKey188 Header Menu1Option1Text Home
168 MatterCenterConfig RowKey189 Header Menu1Option2Text Matters
169 MatterCenterConfig RowKey190 Header Menu1Option3Text Documents
170 MatterCenterConfig RowKey191 Header ContextualHelpImageTitle Matter center help
171 MatterCenterConfig RowKey192 Header ContextualHelpHeader Matter Center For Outlook
172 MatterCenterConfig RowKey193 Header ContextualHelpNoLinkText There are no help links available.
173 MatterCenterConfig RowKey194 Header ContextualHelpFooterLink1Label Matter Center Aisling Support
174 MatterCenterConfig RowKey195 Header LogoImageTitle Matter center home
175 MatterCenterConfig RowKey196 Header ContextualHelpLabel1 Get to know this view
176 MatterCenterConfig RowKey197 Header ContextualHelpLabel2 How do I get Project Center on my device?
177 MatterCenterConfig RowKey198 Header MatterCenterSupportLink mailto:support@supportsite.com
178 MatterCenterConfig RowKey199 Header ContextualHelpFooterLink1Title Write an email to support
179 MatterCenterConfig RowKey200 Header ContextualHelpFooterLabel Questions? Contact
180 MatterCenterConfig RowKey201 Header ContextualHelpAltText Contextual Help
181 MatterCenterConfig RowKey202 Header ContextualHelpFlyoutAltText Close flyout
182 MatterCenterConfig RowKey203 Header CloseTitle Close
183 MatterCenterConfig RowKey204 Header DashboardMenuImageUpperCaption Matter Center
184 MatterCenterConfig RowKey205 Header DashboardMenuImageLowerCaption for Office 365
185 MatterCenterConfig RowKey206 Header ImageOpenHamburgerTitle View links
186 MatterCenterConfig RowKey207 Header DashboardHeaderSearchPlaceholderText Search SharePoint
187 MatterCenterConfig RowKey208 Header DashboardSearchIconTitle Search
188 MatterCenterConfig RowKey209 Header HamburgerMenuOption3Text Settings
189 MatterCenterConfig RowKey210 Header FooterMenuOption4Text Microsoft
190 MatterCenterConfig RowKey211 Header FooterMenuOption1Text Feedback & Support
191 MatterCenterConfig RowKey212 Header FooterMenuOption2Text Privacy & Cookies
192 MatterCenterConfig RowKey213 Header FooterMenuOption3Text Terms of use
193 MatterCenterConfig RowKey214 Header ProfilePictureLabelText Profile Picture
194 MatterCenterConfig RowKey215 Header LabelSingOutText Sign Out
195 MatterCenterConfig RowKey216 Header ImageCloseHamburgerTitle Close
196 MatterCenterConfig RowKey226 MatterDashboard LinkImageLoadingTitle Matter Center Home
197 MatterCenterConfig RowKey227 MatterDashboard ImageLoadingAltText Matter Center
198 MatterCenterConfig RowKey228 MatterDashboard ImageCloseTitle Close
199 MatterCenterConfig RowKey229 MatterDashboard AttachmentLoadingText Loading...
200 MatterCenterConfig RowKey230 MatterDashboard SearchTextboxPlaceholderText Search by document name, document ID, or keyword
201 MatterCenterConfig RowKey231 MatterDashboard ImageAdvanceSearchAltText Drop Down
202 MatterCenterConfig RowKey232 MatterDashboard ImageAdvanceSearchTitle Advanced search
203 MatterCenterConfig RowKey233 MatterDashboard AdvSearchLabel1Text Clients
204 MatterCenterConfig RowKey234 MatterDashboard AdvSearchTextbox1PlaceholderText Enter or select a client
205 MatterCenterConfig RowKey235 MatterDashboard AdvSearchSelectAllLinkText Select All
206 MatterCenterConfig RowKey236 MatterDashboard AdvSearchSelectNoneLinkText Select None
207 MatterCenterConfig RowKey237 MatterDashboard AdvSearchbuttonOkText Ok
208 MatterCenterConfig RowKey238 MatterDashboard AdvSearchbuttonCancelText Cancel
209 MatterCenterConfig RowKey239 MatterDashboard AdvSearchLabel2Text Practice Group
210 MatterCenterConfig RowKey240 MatterDashboard AdvSearchTextbox2PlaceholderText Enter or select a practice group
211 MatterCenterConfig RowKey241 MatterDashboard AdvSearchLabel3Text Area of Law
212 MatterCenterConfig RowKey242 MatterDashboard AdvSearchTextbox3PlaceholderText Enter or select an area of law
213 MatterCenterConfig RowKey243 MatterDashboard AdvSearchLabel4Text Date
214 MatterCenterConfig RowKey244 MatterDashboard AdvSearchTextbox4PlaceholderText From
215 MatterCenterConfig RowKey245 MatterDashboard AdvSearchTextbox5PlaceholderText To
216 MatterCenterConfig RowKey246 MatterDashboard AdvSearchButtonSearchText Search
217 MatterCenterConfig RowKey247 MatterDashboard Tab1HeaderText My matters
218 MatterCenterConfig RowKey248 MatterDashboard Tab2HeaderText All matters
219 MatterCenterConfig RowKey249 MatterDashboard Tab3HeaderText Pinned matters
220 MatterCenterConfig RowKey250 MatterDashboard ButtonExportText Export
221 MatterCenterConfig RowKey251 MatterDashboard LabelSortByText Sort by:
222 MatterCenterConfig RowKey252 MatterDashboard DrpDownOption1Text None
223 MatterCenterConfig RowKey253 MatterDashboard DrpDownOption2Text Alphabetical
224 MatterCenterConfig RowKey254 MatterDashboard DrpDownOption3Text Created date
225 MatterCenterConfig RowKey255 MatterDashboard NoSearchResultMsgText No results found.
226 MatterCenterConfig RowKey256 MatterDashboard Button1DuplicateContentTitle Matter Center will compare all content and data associated with the two documents. Navigating away from this screen will cancel the content check.
227 MatterCenterConfig RowKey257 MatterDashboard Button1DuplicateContentText Perform content check
228 MatterCenterConfig RowKey258 MatterDashboard Button2SaveLatestVersionTitle The file will be saved as the latest version of the existing document that has same title. Matter Center will retain all prior versions of the document.
229 MatterCenterConfig RowKey259 MatterDashboard Button2SaveLatestVersionText Save as latest version
230 MatterCenterConfig RowKey260 MatterDashboard Button3AppendDateTitle The file will be saved as new, separate document with the current date and time added to the end of the file name.
231 MatterCenterConfig RowKey261 MatterDashboard Button3AppendDateText Append date to file name and save
232 MatterCenterConfig RowKey262 MatterDashboard Button4CancelUploadTitle This document will not be uploaded and you will return to the previous screen.
233 MatterCenterConfig RowKey263 MatterDashboard Button4CancelUploadText Cancel upload
234 MatterCenterConfig RowKey264 MatterDashboard Image1ContentCheckText Checking content
235 MatterCenterConfig RowKey265 MatterDashboard UploadCompleteLabel1Text Upload complete.
236 MatterCenterConfig RowKey266 MatterDashboard CloseIconText X
237 MatterCenterConfig RowKey267 MatterDashboard AttachmentPopupHeaderText Drag and drop items to folders on the right
238 MatterCenterConfig RowKey268 MatterDashboard AttachmentPopupHeaderItem1Text Items
239 MatterCenterConfig RowKey269 MatterDashboard AttachmentPopupHeaderItem2Text Folders
240 MatterCenterConfig RowKey270 MatterDashboard AttachmentEditImageTitle Edit attachment name
241 MatterCenterConfig RowKey271 MatterDashboard AttachmentEditImageAltText Edit
242 MatterCenterConfig RowKey272 MatterDashboard AttachmentSaveImageTitle Save attachment name
243 MatterCenterConfig RowKey273 MatterDashboard AttachmentSaveImageText Save
244 MatterCenterConfig RowKey274 MatterDashboard AttachmentUploadSuccessfullyImageAltText Uploaded successfully
245 MatterCenterConfig RowKey275 MatterDashboard AttachmentIconImageAltText attachment icon
246 MatterCenterConfig RowKey276 MatterDashboard AttachmentTestTitle Test attachments
247 MatterCenterConfig RowKey277 MatterDashboard AttachmentEmptyText No files uploaded
248 MatterCenterConfig RowKey278 MatterDashboard AttachmentPopupFooterImageCapetion You can also drag and drop files from your desktop.
249 MatterCenterConfig RowKey279 MatterDashboard MattersPreLoadingMsgText Please wait while the Matters load.
250 MatterCenterConfig RowKey280 MatterDashboard GridColumn1Header Matter
251 MatterCenterConfig RowKey281 MatterDashboard GridColumn2Header Client
252 MatterCenterConfig RowKey282 MatterDashboard GridColumn3Header Client.Matter ID
253 MatterCenterConfig RowKey283 MatterDashboard GridColumn4Header Modified Date
254 MatterCenterConfig RowKey284 MatterDashboard GridColumn5Header Responsible attorney
255 MatterCenterConfig RowKey285 MatterDashboard AdvSearchLabel1InternalFuncParamText client
256 MatterCenterConfig RowKey286 MatterDashboard AdvSearchLabel2InternalFuncParamText level1
257 MatterCenterConfig RowKey287 MatterDashboard AdvSearchLabel3InternalFuncParamText level2
258 MatterCenterConfig RowKey297 Matters EllipsisLink5Text Unpin this matter
259 MatterCenterConfig RowKey298 Matters AttachmentEditImageTitle Edit attachment name
260 MatterCenterConfig RowKey299 Matters AttachmentEditImageAltText Edit
261 MatterCenterConfig RowKey300 Matters AttachmentSaveImageTitle Save attachment name
262 MatterCenterConfig RowKey301 Matters AttachmentSaveImageText Save
263 MatterCenterConfig RowKey302 Matters AttachmentUploadSuccessfullyImageAltText Uploaded successfully
264 MatterCenterConfig RowKey303 Matters AttachmentIconImageAltText attachment icon
265 MatterCenterConfig RowKey304 Matters AttachmentTestTitle Test attachments
266 MatterCenterConfig RowKey305 Matters AttachmentEmptyText No files uploaded
267 MatterCenterConfig RowKey306 Matters AttachmentBreadcrumAltText Root
268 MatterCenterConfig RowKey307 Matters AttachmentFolderAltText Documents
269 MatterCenterConfig RowKey308 Matters FilterSearchPlaceholderText Search
270 MatterCenterConfig RowKey309 Matters ClearFilterText Clear filters from
271 MatterCenterConfig RowKey310 Matters NoFilterMatchMsgTitle There are no items that match this filter
272 MatterCenterConfig RowKey311 Matters NoFilterMatchMsgText There are no items that match this filter
273 MatterCenterConfig RowKey312 Matters ImageCloseText Close
274 MatterCenterConfig RowKey313 Matters ImageClearTitle Clear
275 MatterCenterConfig RowKey314 Matters ImageClearAltText Clear filters
276 MatterCenterConfig RowKey315 Matters ClearFilterFromLabelText Clear filters from
277 MatterCenterConfig RowKey316 Matters ImageWarningAltText Warning Message
278 MatterCenterConfig RowKey317 Matters Button1DuplicateContentTitle Matter Center will compare all content and data associated with the two documents. Navigating away from this screen will cancel the content check.
279 MatterCenterConfig RowKey318 Matters Button1DuplicateContentText Perform content check
280 MatterCenterConfig RowKey319 Matters Button2SaveLatestVersionTitle The file will be saved as the latest version of the existing document that has same title. Matter Center will retain all prior versions of the document.
281 MatterCenterConfig RowKey320 Matters Button2SaveLatestVersionText Save as latest version
282 MatterCenterConfig RowKey321 Matters Button3AppendDateTitle The file will be saved as new, separate document with the current date and time added to the end of the file name.
283 MatterCenterConfig RowKey322 Matters Button3AppendDateText Append date to file name and save
284 MatterCenterConfig RowKey323 Matters Button4CancelUploadTitle This document will not be uploaded and you will return to the previous screen.
285 MatterCenterConfig RowKey324 Matters Button4CancelUploadText Cancel upload
286 MatterCenterConfig RowKey325 Matters Button5OkTitle This document will not be uploaded and you will return to the previous screen.
287 MatterCenterConfig RowKey326 Matters Button5OkText Ok
288 MatterCenterConfig RowKey327 Matters Image1ContentCheckText Checking content
289 MatterCenterConfig RowKey328 Matters Button6CancelText Cancel
290 MatterCenterConfig RowKey329 Matters UploadCompleteLabel1Text Upload complete.
291 MatterCenterConfig RowKey330 Matters CloseIconText x
292 MatterCenterConfig RowKey331 Matters StartDatePlaceHolder Start mm/dd/yyyy
293 MatterCenterConfig RowKey332 Matters EndDatePlaceHolder End mm/dd/yyyy
294 MatterCenterConfig RowKey333 Matters GridColumn8Header Area of Law
295 MatterCenterConfig RowKey334 Matters AttachmentLoadingText Loading...
296 MatterCenterConfig RowKey335 Matters GridColumn5Header Responsible Attorney
297 MatterCenterConfig RowKey336 Matters GridColumn6Header Sub Area of Law
298 MatterCenterConfig RowKey337 Matters GridColumn7Header Open Date
299 MatterCenterConfig RowKey338 Matters Dropdown1Item1 All Matters
300 MatterCenterConfig RowKey339 Matters Dropdown1Item2 My Matters
301 MatterCenterConfig RowKey340 Matters Dropdown1Item3 Pinned Matters
302 MatterCenterConfig RowKey341 Matters SearchPlaceholderText Search by ID, or matter or client name
303 MatterCenterConfig RowKey342 Matters NoDataSearchText Nothing matches your search term or the filter you selected. Please try again.<br>If you applied a filter, remove it to get back to your list.<br>Search suggestions:<br><ul><li>Make sure all words are spelled correctly</li><li>Try different keywords</li><li>Try searching by the matter name or client name</li><li>Try more general search terms</li></ul>
304 MatterCenterConfig RowKey343 Matters GridColumn1Header Matter
305 MatterCenterConfig RowKey344 Matters GridColumn2Header Client
306 MatterCenterConfig RowKey345 Matters GridColumn3Header Client.MatterID
307 MatterCenterConfig RowKey346 Matters GridColumn4Header Modified Date
308 MatterCenterConfig RowKey347 Matters HeaderText All Matters
309 MatterCenterConfig RowKey348 Matters EllipsisLink1Text Upload to this Matter
310 MatterCenterConfig RowKey349 Matters EllipsisLink2Text View Matter Details
311 MatterCenterConfig RowKey350 Matters EllipsisLink3Text Go to Matter OneNote
312 MatterCenterConfig RowKey351 Matters EllipsisLink4Text Pin this matter
313 MatterCenterConfig RowKey352 Matters FlyoutButton1Text View matter details
314 MatterCenterConfig RowKey353 Matters FlyoutButton2Text Upload to a matter
315 MatterCenterConfig RowKey354 Matters AttachmentPopupHeaderText Drag and drop items to folders on the right
316 MatterCenterConfig RowKey355 Matters AttachmentPopupFooterImageCapetion You can also drag and drop files from your desktop.
317 MatterCenterConfig RowKey356 Matters AttachmentPopupHeaderItem1Text Items
318 MatterCenterConfig RowKey357 Matters AttachmentPopupHeaderItem2Text Folders
319 MatterCenterConfig RowKey358 Matters AttachmentPopupHeaderText Upload to a matter
320 MatterCenterConfig RowKey371 Navigation MenuItem1LinkTitle Home
321 MatterCenterConfig RowKey372 Navigation MenuItem1LinkTitle Search matters
322 MatterCenterConfig RowKey373 Navigation MenuItem1LinkTitle Search documents
323 MatterCenterConfig RowKey374 Navigation NameTitle Matter
324 MatterCenterConfig RowKey375 Navigation HeaderBarLink1Title Learn more about matter center
325 MatterCenterConfig RowKey376 Navigation HeaderBarLink2Title Remove this section
326 MatterCenterConfig RowKey377 Navigation MenuImageOpenTitle Open App Switcher
327 MatterCenterConfig RowKey378 Navigation MenuImageCloseTitle Close App Switcher
328 MatterCenterConfig RowKey379 Navigation HeaderBarLink1Text LearnMore
329 MatterCenterConfig RowKey380 Navigation HomeMenuText Home
330 MatterCenterConfig RowKey381 Navigation Image1Title Search matters
331 MatterCenterConfig RowKey382 Navigation Image2Title Search documents
332 MatterCenterConfig RowKey383 Navigation HelpRequesURL https://msmatter.sharepoint.com/sites/catalog
333 MatterCenterConfig RowKey384 Navigation FooterLabel Questions? Contact
334 MatterCenterConfig RowKey385 Navigation MenuImageCaption menu
335 MatterCenterConfig RowKey386 Navigation MenuImageTitle Matter center menu
336 MatterCenterConfig RowKey387 Navigation MenuItem1LinkText Home
337 MatterCenterConfig RowKey388 Navigation MenuItem2LinkText Matters
338 MatterCenterConfig RowKey389 Navigation MenuItem3LinkText Documents
339 MatterCenterConfig RowKey390 Navigation LogoImageTitle Matter center home
340 MatterCenterConfig RowKey391 Navigation ContextualHelpImageTitle Matter center help
341 MatterCenterConfig RowKey392 Navigation ContextualHelpLabel1 Get to know this view
342 MatterCenterConfig RowKey393 Navigation ContextualHelpLink1Text Home in Outlook and Word
343 MatterCenterConfig RowKey394 Navigation ContextualHelpLink1URL https://microsoft.sharepoint.com/teams/celapcconfig/Shared%20Documents/CELA%20Project%20Center%20End%20User%20Guide_24.pdf#Home_in_Outlook_and_Word
344 MatterCenterConfig RowKey395 Navigation ContextualHelpLabel2 How do I get Project Center on my device?
345 MatterCenterConfig RowKey396 Navigation ContextualHelpLink2URL https://microsoft.sharepoint.com/teams/celapcconfig/Shared%20Documents/CELA%20Project%20Center%20End%20User%20Guide_24.pdf#Enabling_Project_Center
346 MatterCenterConfig RowKey397 Navigation ContextualHelpFooterLink1Label Matter Center Aisling Support
347 MatterCenterConfig RowKey398 Navigation MatterCenterSupportLink mailto:support@supportsite.com
348 MatterCenterConfig RowKey399 Navigation ContextualHelpFooterLink1Title Write an email to support
349 MatterCenterConfig RowKey400 Navigation ContextualHelpHeader Matter Center For Outlook
350 MatterCenterConfig RowKey401 Navigation ContextualHelpFooterLabel Questions? Contact
351 MatterCenterConfig RowKey402 Navigation HeaderBarLabel Welcome to Matter Center! Upload, share, and save your documents here.
352 MatterCenterConfig RowKey403 Navigation Image1Caption Matters
353 MatterCenterConfig RowKey404 Navigation Image2Caption Documents
354 MatterCenterConfig RowKey405 Navigation HeaderBarLink1URL http://www.microsoft.com/mattercenter
355 MatterCenterConfig RowKey406 Navigation HeaderBarLink2Text dismiss
356 MatterCenterConfig RowKey407 Navigation Image3Caption Upload attachments
357 MatterCenterConfig RowKey408 Navigation Image4Caption Create a new matter
358 MatterCenterConfig RowKey409 Navigation Image5Caption Go to Matter Center Home
359 MatterCenterConfig RowKey410 Navigation FooterLink1Title Matter Center Support
360 MatterCenterConfig RowKey411 Navigation FooterLink1Text Matter Center Support
361 MatterCenterConfig RowKey412 Navigation FooterLink1URL mailto:lcaweb2@microsoft.com?subject=CELA Project Center Feedback and Support request
362 MatterCenterConfig RowKey413 Navigation Image3Title Upload documents to a matter
363 MatterCenterConfig RowKey414 Navigation Image4Title Create a new matter site
364 MatterCenterConfig RowKey415 Navigation Image5Title Go to the web home page
365 MatterCenterConfig RowKey425 Settings Label1HeaderText Settings
366 MatterCenterConfig RowKey426 Settings Label2Text Click on a name to configure matter creation options for that client.
367 MatterCenterConfig RowKey427 Settings Label3Text Client Name
368 MatterCenterConfig RowKey429 Settings Label5Section1HeaderText Select default values
369 MatterCenterConfig RowKey430 Settings Label6Section1HeaderText Default selections will be editable when a new matter is created.
370 MatterCenterConfig RowKey431 Settings Label7DefaultValue1TitleText Matter Name
371 MatterCenterConfig RowKey432 Settings Label8DefaultValue1TitleDescription Enter default text to appear when a new matter is created. For example, a matter name prefix or suffix, or naming convention instructions.This text can be removed or changed when a new matter is created.
372 MatterCenterConfig RowKey433 Settings Label9DefaultValue2TitleText Matter ID
373 MatterCenterConfig RowKey434 Settings Label10DefaultValue2TitleDescription ID numbers must be manually entered when a new matter is created. Enter default text, such as ID prefix or suffix, or numbering instructions. This text can be removed or changed when a new matter is created.
374 MatterCenterConfig RowKey435 Settings Label11DefaultValue3HeaderText Set a default matter type by selecting a Practice group, Area of law, and Sub areas of law below.
375 MatterCenterConfig RowKey436 Settings Label12DefaultValue3TitleText Default to restricting access to an assigned team?
376 MatterCenterConfig RowKey437 Settings Label13DefaultValue3TitleDescription This can be changed when a new matter is created. If you select yes, you can either define a default team below or leave the team permission blank.
377 MatterCenterConfig RowKey438 Settings Radio1Option1Text Yes
378 MatterCenterConfig RowKey439 Settings Radio1Option2Text No
379 MatterCenterConfig RowKey440 Settings Label14DefaultValue4HeaderText Assign team permission
380 MatterCenterConfig RowKey441 Settings Label15DefaultValue4Text Name
381 MatterCenterConfig RowKey442 Settings Label16DefaultValue4Text Role
382 MatterCenterConfig RowKey443 Settings Label17DefaultValue4Text Permission level
383 MatterCenterConfig RowKey444 Settings Textbox1DefaultValue4PlaceholdertText Enter and select names
384 MatterCenterConfig RowKey445 Settings Label18DefaultValue4NoResultsFoundText No Results Found
385 MatterCenterConfig RowKey446 Settings Label19DefaultValue4AddMoreText Add More
386 MatterCenterConfig RowKey447 Settings Label20DefaultValue5Text Include email notification?
387 MatterCenterConfig RowKey448 Settings Label21DefaultValue6Text Include calendar?
388 MatterCenterConfig RowKey449 Settings Label22DefaultValue7Text Include tasks?
389 MatterCenterConfig RowKey450 Settings Label23DefaultValue8Text Include RSS Feeds?
390 MatterCenterConfig RowKey451 Settings Label24Section2HeaderText Set matter options
391 MatterCenterConfig RowKey452 Settings Label25Section2HeaderText These settings will not be editable when a new matter is created.
392 MatterCenterConfig RowKey453 Settings Label26Section2Text Make the matter description field required?
393 MatterCenterConfig RowKey454 Settings Label27Section2DescriptionText Selecting No will allow new matters to be saved without a description
394 MatterCenterConfig RowKey455 Settings Label28Section2Text Do matters need conflict check data?
395 MatterCenterConfig RowKey456 Settings Label29Section2DescriptionText Selecting No will remove the conflict check declaration fields from new matters
396 MatterCenterConfig RowKey457 Settings Label30Section2Text Show or hide role?
397 MatterCenterConfig RowKey458 Settings Label31Section2Text Show matter id?
398 MatterCenterConfig RowKey459 Settings Label32Section2Text Matter Id Configuration
399 MatterCenterConfig RowKey460 Settings Radio2Option1Text Guid
400 MatterCenterConfig RowKey461 Settings Radio2Option2Text Date Time
401 MatterCenterConfig RowKey462 Settings Radio2Option3Text Custom
402 MatterCenterConfig RowKey463 Settings ButtonSaveText Save
403 MatterCenterConfig RowKey464 Settings ButtonCancelText Cancel
404 MatterCenterConfig RowKey465 Settings ImageLoadingAltText Loading...
405 MatterCenterConfig RowKey466 Settings Label4Selection1HeaderText This page shows the current settings for this client's new matters. The first section allows you to set new matter default selections, which can be changed when a matter is created. The second section defines settings that can not be changed when a new matter is created. No changes are required, and any changes made will not affect existing matters.
406 MatterCenterConfig RowKey467 Settings DeleteTitleText Delete
407 MatterCenterConfig RowKey468 Settings Radio2Option2ValueText DateTime
408 MatterCenterConfig RowKey469 Settings Label33Section2Text Your changes have been saved. Go back to
409 MatterCenterConfig RowKey470 Settings Label34Section2Text Clients
410 MatterCenterConfig RowKey481 MatterLanding Label1Tab1HeaderText Matter Profile
411 MatterCenterConfig RowKey482 MatterLanding Label2Tab2HeaderText Matter Description
412 MatterCenterConfig RowKey483 MatterLanding Label3Tab1Column1Text Client Name
413 MatterCenterConfig RowKey484 MatterLanding Label4Tab1Column2Text Client & Matter ID
414 MatterCenterConfig RowKey485 MatterLanding Label5Tab1Column3Text Practice Group
415 MatterCenterConfig RowKey486 MatterLanding Label6Tab1Column4Text Area of Law
416 MatterCenterConfig RowKey487 MatterLanding Label7Tab1Column5Text Responsible Attorney
417 MatterCenterConfig RowKey488 MatterLanding Label8Tab1Section2HeaderText Matter Library
418 MatterCenterConfig RowKey489 MatterLanding MenuImageUpperCaption Matter Center
419 MatterCenterConfig RowKey490 MatterLanding MenuImageLowerCaption for Office 365
420 MatterCenterConfig RowKey491 MatterLanding Menu1Option1Text Matters
421 MatterCenterConfig RowKey492 MatterLanding Menu1Option2Text Documents
422 MatterCenterConfig RowKey493 MatterLanding Menu1Option3Text Settings
423 MatterCenterConfig RowKey502 DocumentDetails Label1HeaderText File Name
424 MatterCenterConfig RowKey503 DocumentDetails Label2Section2HeaderText File Properties
425 MatterCenterConfig RowKey504 DocumentDetails Label3Section2Column1Text File title
426 MatterCenterConfig RowKey505 DocumentDetails Label4Section2Column2Text Client
427 MatterCenterConfig RowKey506 DocumentDetails Label5Section2Column3Text Matter
428 MatterCenterConfig RowKey507 DocumentDetails Label6Section2Column4Text Client.MatterID
429 MatterCenterConfig RowKey508 DocumentDetails Label7Section2Column5Text Document ID
430 MatterCenterConfig RowKey509 DocumentDetails Label8Section2Column6Text Checked out to
431 MatterCenterConfig RowKey510 DocumentDetails Label9Section2Column7Text Author
432 MatterCenterConfig RowKey511 DocumentDetails Label10Section2Column8Text Date created
433 MatterCenterConfig RowKey512 DocumentDetails Label11Section2Column9Text Practice group
434 MatterCenterConfig RowKey513 DocumentDetails Label12Section2Column10Text Area of law:
435 MatterCenterConfig RowKey514 DocumentDetails Label13Section2Column11Text Sub area of law
436 MatterCenterConfig RowKey515 DocumentDetails Label14Section2Column12Text File type
437 MatterCenterConfig RowKey516 DocumentDetails Label15Section2Column13Text File size
438 MatterCenterConfig RowKey517 DocumentDetails Label16Section2Column14Text File access
439 MatterCenterConfig RowKey518 DocumentDetails Label17Section2HeaderText Version history
440 MatterCenterConfig RowKey519 DocumentDetails Label18Section2Column1Text Version
441 MatterCenterConfig RowKey520 DocumentDetails Label19Section2Column2Text Modified
442 MatterCenterConfig RowKey521 DocumentDetails Label20Section2Column3Text Modified By
443 MatterCenterConfig RowKey522 DocumentDetails Label21MenuHeaderOption1Text open
444 MatterCenterConfig RowKey523 DocumentDetails Label22MenuHeaderOption2Text download
445 MatterCenterConfig RowKey524 DocumentDetails Label23MenuHeaderOption3Text share
446 MatterCenterConfig RowKey525 DocumentDetails Label24MenuHeaderOption4Text check in
447 MatterCenterConfig RowKey526 DocumentDetails Label25MenuHeaderOption5Text check out
448 MatterCenterConfig RowKey527 DocumentDetails Label26MenuHeaderOption6Text send link
449 MatterCenterConfig RowKey528 DocumentDetails Label27MenuHeaderOption7Text pin
450 MatterCenterConfig RowKey529 DocumentDetails Label28MenuHeaderOption8Text unpin
451 MatterCenterConfig RowKey530 DocumentDetails Label1TabTitleText Document Details
452 MatterCenterConfig RowKey531 DocumentDetails Link1ErrorDetailsCaptionText Click here for details
453 MatterCenterConfig RowKey532 DocumentDetails Link2AllDocumentText Go to all documents
454 MatterCenterConfig RowKey533 DocumentDetails LabelNoPreviewText There is no preview for this document
455 MatterCenterConfig RowKey534 DocumentDetails ImgNoPreviewSuppoertText Preview not supported...
456 MatterCenterConfig RowKey538 DocumentDetails Link3ViewMoreText View More
457 MatterCenterConfig RowKey540 MatterLanding ErrMsg1NoTask There are no tasks created
458 MatterCenterConfig RowKey541 MatterLanding ErrMsg2FetchTask Error occurred while trying to fetch tasks
459 MatterCenterConfig RowKey542 MatterLanding ErrMsg3CreateEvent Error occurred while trying to fetch events
460 MatterCenterConfig RowKey543 MatterLanding ErrMsg4ActiveEvents There are no active events
461 MatterCenterConfig RowKey544 MatterLanding ErrMsg5NoMatterDescription There is no description for this matter
462 MatterCenterConfig RowKey545 MatterLanding ErrMsg6ForPinUnpinMatters Error while trying to retrieve matter pin/unpin status
463 MatterCenterConfig RowKey546 MatterLanding ErrMsg7MatterInformation Error while trying to retrieve matter information
464 MatterCenterConfig RowKey547 MatterLanding ErrMsg8MatterDescription Error while trying to retrieve matter description
465 MatterCenterConfig RowKey548 MatterLanding ErrMsg9NoPinUnpinMatter Error while trying to pin/unpin matter
466 MatterCenterConfig RowKey549 MatterLanding Label1MenuText Matter Name
467 MatterCenterConfig RowKey550 MatterLanding Label9Section1Text Matter Id
468 MatterCenterConfig RowKey551 MatterLanding Label10Section1Text Client Id
469 MatterCenterConfig RowKey552 MatterLanding Label11Section1Text Description
470 MatterCenterConfig RowKey553 MatterLanding Label12ManageUserTitleText Manage users
471 MatterCenterConfig RowKey554 MatterLanding Label13GotoOnnoteTitleText Go to Matter OneNote
472 MatterCenterConfig RowKey555 MatterLanding Label14TaskeTitleText Task
473 MatterCenterConfig RowKey556 MatterLanding Label15CalenderTitleText Calendar Events
474 MatterCenterConfig RowKey557 MatterLanding Label16RSSFeedTitleText Related News (RSS)
475 MatterCenterConfig RowKey558 MatterLanding Label17EditTitleText View / Edit
476 MatterCenterConfig RowKey561 MatterLanding Label18MenuText My Matters
477 MatterCenterConfig RowKey562 MatterLanding Label19Section4Text Matter Library
478 MatterCenterConfig RowKey570 DocumentDetails Label135MenuHead OneDrive
479 MatterCenterConfig RowKey571 DocumentDetails Label36MenuHeaderOption7Text Send to OneDrive

Просмотреть файл

@ -0,0 +1,40 @@
@{
# Script module or binary module file associated with this manifest.
RootModule = 'ManageTableStorageWithCsvFile'
# Version number of this module.
ModuleVersion = '1.0'
# ID used to uniquely identify this module
GUID = '587ec309-7f25-4f13-b360-03db37a4d80d'
# Author of this module
Author = 'OneScript Team'
# Company or vendor of this module
CompanyName = 'Microsoft'
# Copyright statement for this module
Copyright = '(c) 2015 Microsoft Corporation. All rights reserved.'
# Description of the functionality provided by this module
Description = 'The module contains two advanced functions that can be used to import/export data with Excel to/from Azure table storage.'
# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = '1.0'
# Functions to export from this module
FunctionsToExport = '*'
# Cmdlets to export from this module
CmdletsToExport = '*'
# Variables to export from this module
VariablesToExport = '*'
# Aliases to export from this module
AliasesToExport = '*'
}

Просмотреть файл

@ -0,0 +1,230 @@
#---------------------------------------------------------------------------------
#The sample scripts are not supported under any Microsoft standard support
#program or service. The sample scripts are provided AS IS without warranty
#of any kind. Microsoft further disclaims all implied warranties including,
#without limitation, any implied warranties of merchantability or of fitness for
#a particular purpose. The entire risk arising out of the use or performance of
#the sample scripts and documentation remains with you. In no event shall
#Microsoft, its authors, or anyone else involved in the creation, production, or
#delivery of the scripts be liable for any damages whatsoever (including,
#without limitation, damages for loss of business profits, business interruption,
#loss of business information, or other pecuniary loss) arising out of the use
#of or inability to use the sample scripts or documentation, even if Microsoft
#has been advised of the possibility of such damages
#---------------------------------------------------------------------------------
#requires -Version 3.0
Function Export-AzureTableStorage
{
<#
.SYNOPSIS
This is an advanced function which can be used to export the entity of azure table storage.
.DESCRIPTION
This is an advanced function which can be used to export the entity of azure table storage.
.PARAMETER StorageAccountName
Spcifies the name of storage account.
.PARAMETER TableName
Specifies the name of table storage.
.PARAMETER Path
Specifies the path to the item that will save it to a csv file.
.EXAMPLE
C:\PS> Export-AzureTableStorage -StorageAccountName "storageaccount" -TableName SchemasTable -Path C:\Tables\
Successfully export the table storage to csv file.
This command shows how to export the entities of table storage and saves them to a csv file named 'ShemasTable'.
#>
[CmdletBinding(SupportsShouldProcess=$true)]
Param
(
[Parameter(Mandatory=$true)]
[String]$StorageAccountName,
[Parameter(Mandatory=$true)]
[String]$TableName,
[Parameter(Mandatory=$true)]
[String]$Path
)
#Check if Windows Azure PowerShell Module is avaliable
If((Get-Module -ListAvailable Azure) -eq $null)
{
Write-Warning "Windows Azure PowerShell module not found! Please install from http://www.windowsazure.com/en-us/downloads/#cmd-line-tools"
}
Else
{
If($StorageAccountName)
{
Get-AzureRmStorageAccount -ResourceGroupName "test26aug" -Name $StorageAccountName -verbose -ErrorAction SilentlyContinue `
-ErrorVariable IsExistStorageError | Out-Null
#Check if storage account is exist
If($IsExistStorageError.Exception -eq $null)
{
If($TableName)
{
Get-AzureStorageTable -Name $TableName -ErrorAction SilentlyContinue `
-ErrorVariable IsExistTableError | Out-Null
#Check if table is exist
If($IsExistTableError.Exception -eq $null)
{
#Specify a Windows Azure Storage Library path
$StorageLibraryPath = "$env:SystemDrive\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.5\ref\Microsoft.WindowsAzure.Storage.dll"
#Getting Azure storage account key
$Keys = Get-AzureStorageKey -StorageAccountName $StorageAccountName
$StorageAccountKey = "yDOE9PA2C/IDy0EL50eMOY3AnUkBN7qXn4AtXDYtJg6Y9xnZtokBugYhKoVn3fMfliYtm/uOU+ry5mGNaJdwIA=="
#Loading Windows Azure Storage Library for .NET.
Write-Verbose -Message "Loading Windows Azure Storage Library from $StorageLibraryPath"
[Reflection.Assembly]::LoadFile("$StorageLibraryPath") | Out-Null
$Creds = New-Object Microsoft.WindowsAzure.Storage.Auth.StorageCredentials("$StorageAccountName","$StorageAccountKey")
$CloudStorageAccount = New-Object Microsoft.WindowsAzure.Storage.CloudStorageAccount($Creds, $true)
$CloudTableClient = $CloudStorageAccount.CreateCloudTableClient()
$Table = $CloudTableClient.GetTableReference($TableName)
$Query = New-Object "Microsoft.WindowsAzure.Storage.Table.TableQuery"
$Datas = $Table.ExecuteQuery($Query)
$ExportObjs = @()
Foreach($Data in $Datas)
{
$Obj = New-Object PSObject
$Obj | Add-Member -Name PartitionKey -Value $Data.PartitionKey -MemberType NoteProperty
$Obj | Add-Member -Name RowKey -Value $Data.RowKey -MemberType NoteProperty
$Data.Properties.Keys | Foreach{$Value = $data.Properties[$_].PropertyAsObject;
$Obj | Add-Member -Name $_ -Value $value -MemberType NoteProperty; }
$ExportObjs += $Obj
}
#Export the entities of table storage to csv file.
$ExportObjs | Export-Csv "$Path\$TableName.csv" -NoTypeInformation
Write-Host "Successfully export the table storage to csv file."
}
Else
{
Write-Warning "Cannot find blob '$TableName' because it does not exist. Please make sure thar the name of table is correct."
}
}
}
Else
{
Write-Warning "Cannot find storage account '$StorageAccountName' because it does not exist. Please make sure thar the name of storage is correct."
}
}
}
}
Function Import-AzureTableStorage
{
<#
.SYNOPSIS
This is an advanced function which can be used to import the entities of csv file into a table storage.
.DESCRIPTION
This is an advanced function which can be used to import the entities of csv file into a table storage.
.PARAMETER StorageAccountName
Spcifies the name of storage account.
.PARAMETER TableName
Specifies the name of table storage.
.PARAMETER Path
Specifies the file path of the csv to be imported. This parameter is required.
.EXAMPLE
C:\PS> Import-AzureTableStorage -StorageAccountName "storageaccount" -TableName SchemasTable2 -Path C:\Tables\SchemasTable.csv
Successfully Imported entities of table storage named 'SchemasTable'.
This command shows how to import the entities of the csv file into a table storage.
#>
[CmdletBinding(SupportsShouldProcess=$true)]
Param
(
[Parameter(Mandatory=$true)]
[String]$ResourceGroupName,
[Parameter(Mandatory=$true)]
[String]$StorageAccountName,
[Parameter(Mandatory=$true)]
[String]$StorageAccountKey,
[Parameter(Mandatory=$true)]
[String]$TableName,
[Parameter(Mandatory=$true)]
[String]$Path
)
#Check if Windows Azure PowerShell Module is avaliable
If((Get-Module -ListAvailable Azure) -eq $null)
{
Write-Warning "Windows Azure PowerShell module not found! Please install from http://www.windowsazure.com/en-us/downloads/#cmd-line-tools"
}
Else
{
If($StorageAccountName)
{
Get-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -ErrorAction SilentlyContinue `
-ErrorVariable IsExistStorageError | Out-Null
#Check if storage account is exist
If($IsExistStorageError.Exception -eq $null)
{
If($TableName)
{
#Specify a Windows Azure Storage Library path
$StorageLibraryPath = "$env:SystemDrive\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.5\ref\Microsoft.WindowsAzure.Storage.dll"
#Getting Azure storage account key
$Creds = New-Object Microsoft.WindowsAzure.Storage.Auth.StorageCredentials("$StorageAccountName","$StorageAccountKey")
$CloudStorageAccount = New-Object Microsoft.WindowsAzure.Storage.CloudStorageAccount($Creds, $true)
$CloudTableClient = $CloudStorageAccount.CreateCloudTableClient()
$Table = $CloudTableClient.GetTableReference($TableName)
#Create a Table Storage
Write-Verbose "Creating a table storage named '$TableName'."
#Try to create table if it does not exist
$Table.CreateIfNotExists() | Out-Null
If(Test-Path -Path $Path)
{
$CsvContents = Import-Csv -Path $Path
$CsvHeaders = ($CsvContents[0] | Get-Member -MemberType NoteProperty).Name | Where{$_ -ne "RowKey" -and $_ -ne "PartitionKey"}
Foreach($CsvContent in $CsvContents)
{
$PartitionKey = $CsvContent.PartitionKey
$RowKey = $CsvContent.RowKey
$Entity = New-Object "Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity" "$PartitionKey", "$RowKey"
Foreach($CsvHeader in $CsvHeaders)
{
$Value = $CsvContent.$CsvHeader
$Entity.Properties.Add($CsvHeader, $Value)
}
Write-Verbose "Inserting the entity into table storage."
$result = $Table.Execute([Microsoft.WindowsAzure.Storage.Table.TableOperation]::Insert($Entity))
}
Write-Host "Successfully Imported entities of table storage named '$TableName'."
}
Else
{
Write-Warning "The path does not exist, please check it is correct."
}
}
}
Else
{
Write-Warning "Cannot find storage account '$StorageAccountName' because it does not exist. Please make sure thar the name of storage is correct."
}
}
}
}

Просмотреть файл

@ -0,0 +1,220 @@
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"Tenant_id": {
"defaultValue": "",
"type": "String"
},
"Redis_cache_name": {
"defaultValue": "MatterCenterCache",
"type": "String"
},
"autoscalesettings_name": {
"defaultValue": "MatterCenterWebPlan",
"type": "String"
},
"components_AppInsights_name": {
"defaultValue": "MatterCenterInsights",
"type": "String"
},
"vaults_KeyVault_name": {
"defaultValue": "MatterCenterKeyVault",
"type": "String"
},
"storageAccount_name": {
"defaultValue": "mattercenterstorage",
"type": "String"
},
"serverfarms_WebPlan_name": {
"defaultValue": "MatterCenterWebPlan",
"type": "String"
},
"webSite_name": {
"defaultValue": "MatterCenterWeb",
"type": "String"
},
"Web_ADApp_Name": {
"defaultValue": "MatterCenterWebApp",
"type": "String"
},
"KeyVault_ADApp_Name": {
"defaultValue": "MatterCenterKVApp",
"type": "String"
},
"KeyVault_certificate_expiryDate": {
"defaultValue": "2018-04-11",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "microsoft.insights/autoscalesettings",
"name": "[parameters('autoscalesettings_name')]",
"apiVersion": "2014-04-01",
"location": "westus",
"properties": {
"profiles": [
{
"name": "Default",
"capacity": {
"minimum": "1",
"maximum": "2",
"default": "1"
},
"rules": [
{
"metricTrigger": {
"metricName": "CpuPercentage",
"metricNamespace": "",
"metricResourceUri": "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_WebPlan_name'))]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT10M",
"timeAggregation": "Average",
"operator": "GreaterThan",
"threshold": 80
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT10M"
}
},
{
"metricTrigger": {
"metricName": "CpuPercentage",
"metricNamespace": "",
"metricResourceUri": "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_WebPlan_name'))]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT1H",
"timeAggregation": "Average",
"operator": "LessThan",
"threshold": 60
},
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT1H"
}
}
]
}
],
"enabled": false,
"name": "[parameters('autoscalesettings_name')]",
"targetResourceUri": "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_WebPlan_name'))]"
},
"resources": [],
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_WebPlan_name'))]"
]
},
{
"type": "Microsoft.Insights/components",
"kind": "web",
"name": "[parameters('components_AppInsights_name')]",
"apiVersion": "2014-04-01",
"location": "Central US",
"properties": {
"ApplicationId": "[parameters('components_AppInsights_name')]"
},
"resources": [],
"dependsOn": []
},
{
"type": "Microsoft.KeyVault/vaults",
"name": "[parameters('vaults_KeyVault_name')]",
"apiVersion": "2015-06-01",
"location": "West US",
"tags": {},
"properties": {
"sku": {
"family": "A",
"name": "Standard"
},
"tenantId": "[parameters('Tenant_id')]",
"accessPolicies": [
],
"enabledForDeployment": false
},
"resources": [],
"dependsOn": []
},
{
"type": "Microsoft.Storage/storageAccounts",
"sku": {
"name": "Standard_RAGRS",
"tier": "Standard"
},
"kind": "Storage",
"name": "[parameters('storageAccount_name')]",
"apiVersion": "2016-01-01",
"location": "westus",
"tags": {},
"properties": {},
"resources": [],
"dependsOn": []
},
{
"type": "Microsoft.Web/serverfarms",
"sku": {
"name": "F1",
"tier": "Free",
"size": "F1",
"family": "F",
"capacity": 0
},
"name": "[parameters('serverfarms_WebPlan_name')]",
"apiVersion": "2015-08-01",
"location": "West US",
"properties": {
"name": "[parameters('serverfarms_WebPlan_name')]",
"numberOfWorkers": 0
},
"resources": [],
"dependsOn": []
},
{
"type": "Microsoft.Web/sites",
"name": "[parameters('webSite_name')]",
"apiVersion": "2015-08-01",
"location": "West US",
"properties": {
"name": "[parameters('webSite_name')]",
"hostNames": [
"[concat(parameters('webSite_name'),'.azurewebsites.net')]"
],
"enabledHostNames": [
"[concat(parameters('webSite_name'),'.azurewebsites.net')]",
"[concat(parameters('webSite_name'),'.scm.azurewebsites.net')]"
],
"hostNameSslStates": [
{
"name": "[concat(parameters('webSite_name'),'.azurewebsites.net')]",
"sslState": 0,
"thumbprint": null,
"ipBasedSslState": 0
},
{
"name": "[concat(parameters('webSite_name'),'.scm.azurewebsites.net')]",
"sslState": 0,
"thumbprint": null,
"ipBasedSslState": 0
}
],
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_WebPlan_name'))]"
},
"resources": [],
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_WebPlan_name'))]"
]
}
]
}

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"Redis_cache_name": {
"value": "MatterCenterAug2614"
},
"autoscalesettings_name": {
"value": "MatterCenterAug2614"
},
"components_AppInsights_name": {
"value": "MatterCenterAug2614"
},
"vaults_KeyVault_name": {
"value": "MatterCenterAug2614"
},
"storageAccount_name": {
"value": "mattercenteraug2614"
},
"serverfarms_WebPlan_name": {
"value": "MatterCenterAug2614"
},
"webSite_name": {
"value": "MatterCenterAug2614"
},
"Tenant_id": {
"value": "3c4562ca-39a4-4d8b-91ff-6d3eefab5c1d"
},
"Web_ADApp_Name": {
"value": "MatterCenterWebAppAD1"
},
"KeyVault_ADApp_Name": {
"value": "MatterCenterKVApp1"
},
"KeyVault_certificate_expiryDate": {
"value": "2018-04-11"
}
}
}

Двоичные данные
tree/master/cloud/src/solution/Deployment/Tools/AzCopy.exe Normal file

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Microsoft.Legal.MatterCenter.Models
{
public class ManagedColumn
{
/// <summary>
/// Gets or sets the name of the term (practice group).
/// </summary>
/// <value>The name of the term.</value>
public string TermName
{
get;
set;
}
/// <summary>
/// Gets or sets the id of the term (practice group). This is a GUID value (string representation) and is used as the Id property of the Term.
/// </summary>
/// <value>The id of the term.</value>
public string Id
{
get;
set;
}
/// <summary>
/// Gets or sets the WssId of the term (practice group). This is an integer value being used as the Id of the Term in the TaxonomyHiddenList.
/// </summary>
/// <value>The WssId of the term.</value>
public int WssId
{
get;
set;
}
}
}

Просмотреть файл

@ -1,143 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.DataLayer
// Author : v-swmirj
// Created : 06-16-2015
//
// ***********************************************************************
// <copyright file="Constants.cs" company="Microsoft.Legal.MatterCenter.DataLayer">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file defines constants used under current project.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.DataLayer
{
#region using
using System.Collections.Generic;
#endregion
static class Constants
{
/// <summary>
/// Holds the relative location for OneNote file that is uploaded upon matter creation
/// </summary>
internal const string ONENOTERELATIVEFILEPATH = "~/Open Notebook.onetoc2";
/// <summary>
/// Constant required for extension for OneNote table of content
/// </summary>
internal const string EXTENSIONONENOTETABLEOFCONTENT = ".onetoc2";
/// <summary>
/// The true constant
/// </summary>
internal const string TRUE = "true";
/// <summary>
/// The false constant
/// </summary>
internal const string FALSE = "false";
/// <summary>
/// The colon constant
/// </summary>
internal const string COLON = ":";
/// <summary>
/// The forward slash constant
/// </summary>
internal const string FORWARDSLASH = "/";
/// <summary>
/// Web Query string
/// </summary>
internal const string WEBSTRING = "?Web=1";
/// <summary>
/// The dollar constant
/// </summary>
internal const string DOLLAR = "$";
/// <summary>
/// Modified date column
/// </summary>
internal const string MODIFIED_DATE_COLUMN = "Modified";
/// <summary>
/// The pipe constant
/// </summary>
internal const string PIPE = "|";
/// <summary>
/// Zone index to be used while creating matter page
/// </summary>
internal const int ZONEINDEX = 1;
/// <summary>
/// Title column for list item
/// </summary>
internal const string TITLE = "Title";
}
public class ListInformation
{
public string name
{
get;
set;
}
public string description
{
get;
set;
}
public string templateType
{
get;
set;
}
public bool isContentTypeEnable
{
get;
set;
}
public IList<string> folderNames
{
get;
set;
}
public VersioningInfo versioning
{
get;
set;
}
public string Path
{
get;
set;
}
}
public class VersioningInfo
{
public bool EnableVersioning
{
get;
set;
}
public bool EnableMinorVersions
{
get;
set;
}
public bool ForceCheckout
{
get;
set;
}
}
}

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -1,669 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.DataLayer
// Author : v-rijadh
// Created : 06-16-2015
//
// ***********************************************************************
// <copyright file="Lists.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file contains methods related to SharePoint list object.</summary>
// ***********************************************************************
//// Keeping using System over here because of usage of CLSComplaint attribute for namespace
using System;
[assembly: CLSCompliant(false)]
namespace Microsoft.Legal.MatterCenter.DataLayer
{
#region using
using Microsoft.SharePoint.Client;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
using System.Web;
using IO = System.IO;
#endregion
/// <summary>
/// Performs operation to update SharePoint list
/// </summary>
public static class Lists
{
/// <summary>
/// Function to create document library for Matter and OneNote
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="listInfo">List information</param>
/// <returns>Success flag</returns>
public static bool Create(ClientContext clientContext, ListInformation listInfo)
{
bool result = true;
if (null != clientContext && null != listInfo && !string.IsNullOrWhiteSpace(listInfo.name))
{
Web web = clientContext.Web;
ListTemplateCollection listTemplates = web.ListTemplates;
ListCreationInformation creationInfo = new ListCreationInformation();
creationInfo.Title = listInfo.name;
creationInfo.Description = listInfo.description;
// To determine changes in URL we specified below condition as this function is common
if (!string.IsNullOrWhiteSpace(listInfo.Path))
{
creationInfo.Url = listInfo.Path;
}
if (!string.IsNullOrWhiteSpace(listInfo.templateType))
{
string templateType = listInfo.templateType;
clientContext.Load(listTemplates, item => item.Include(currentTemplate => currentTemplate.Name, currentTemplate => currentTemplate.ListTemplateTypeKind).Where(selectedTemplate => selectedTemplate.Name == templateType));
clientContext.ExecuteQuery();
if (null != listTemplates && 0 < listTemplates.Count)
{
creationInfo.TemplateType = listTemplates.FirstOrDefault().ListTemplateTypeKind;
}
else
{
result = false;
}
}
else
{
creationInfo.TemplateType = (int)ListTemplateType.DocumentLibrary;
}
if (result)
{
List list = web.Lists.Add(creationInfo);
list.ContentTypesEnabled = listInfo.isContentTypeEnable;
if (null != listInfo.folderNames && listInfo.folderNames.Count > 0)
{
list = Lists.AddFolders(clientContext, list, listInfo.folderNames);
}
if (null != listInfo.versioning)
{
list.EnableVersioning = listInfo.versioning.EnableVersioning;
list.EnableMinorVersions = listInfo.versioning.EnableMinorVersions;
list.ForceCheckout = listInfo.versioning.ForceCheckout;
}
list.Update();
clientContext.Load(list, l => l.DefaultViewUrl);
clientContext.ExecuteQuery();
result = true;
}
}
return result;
}
/// <summary>
/// Creates the OneNote in List/Library
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="clientAddressPath">Client URL</param>
/// <param name="oneNoteLocation">OneNote URL</param>
/// <param name="oneNoteTitle">OneNote Title</param>
/// <param name="listName">List/library name</param>
/// <returns></returns>
public static string AddOneNote(ClientContext clientContext, string clientAddressPath, string oneNoteLocation, string listName, string oneNoteTitle)
{
string returnValue = String.Empty;
if (null != clientContext && !string.IsNullOrWhiteSpace(clientAddressPath) && !string.IsNullOrWhiteSpace(oneNoteLocation) && !string.IsNullOrWhiteSpace(listName))
{
Uri clientUrl = new Uri(clientAddressPath);
string oneNotePath = HttpContext.Current.Server.MapPath(Constants.ONENOTERELATIVEFILEPATH);
byte[] oneNoteFile = System.IO.File.ReadAllBytes(oneNotePath);
Web web = clientContext.Web;
Microsoft.SharePoint.Client.File file = web.GetFolderByServerRelativeUrl(oneNoteLocation).Files.Add(new FileCreationInformation()
{
Url = string.Concat(listName, Constants.EXTENSIONONENOTETABLEOFCONTENT),
Overwrite = true,
ContentStream = new IO.MemoryStream(oneNoteFile)
});
web.Update();
clientContext.Load(file);
clientContext.ExecuteQuery();
ListItem oneNote = file.ListItemAllFields;
oneNote["Title"] = oneNoteTitle;
oneNote.Update();
returnValue = string.Concat(clientUrl.Scheme, Constants.COLON, Constants.FORWARDSLASH, Constants.FORWARDSLASH, clientUrl.Authority, file.ServerRelativeUrl, Constants.WEBSTRING);
}
return returnValue;
}
/// <summary>
/// Adds all the folders from Content type in matter library.
/// </summary>
/// <param name="clientContext">Client context</param>
/// <param name="list">List of folders</param>
/// <param name="folderNames">The folder names.</param>
/// <returns>Microsoft SharePoint Client List</returns>
public static List AddFolders(ClientContext clientContext, List list, IList<string> folderNames)
{
if (null != clientContext && null != list && null != folderNames)
{
FolderCollection listFolders = list.RootFolder.Folders;
Folder listRootFolder = list.RootFolder;
clientContext.Load(listFolders);
clientContext.ExecuteQuery();
if (0 < folderNames.Count)
{
foreach (string folderName in folderNames)
{
// Check for empty folder names
if (!string.IsNullOrEmpty(folderName))
{
listFolders.Add(folderName);
listRootFolder.Update();
}
}
list.Update();
}
}
return list;
}
/// <summary>
/// Adds list item in specified list.
/// </summary>
/// <param name="clientContext">Client context</param>
/// <param name="list">Name of the list</param>
/// <param name="columns">List of column names</param>
/// <param name="values">Values for corresponding columns</param>
/// <returns>String stating success flag</returns>
public static bool AddItem(ClientContext clientContext, List list, IList<string> columns, IList<object> values)
{
bool result = false;
if (null != clientContext && null != list && null != columns && null != values && columns.Count == values.Count)
{
// Add the Matter URL in list
ListItemCreationInformation listItemCreateInfo = new ListItemCreationInformation();
ListItem newListItem = list.AddItem(listItemCreateInfo);
int position = 0;
foreach (string column in columns)
{
newListItem[column] = values[position++];
}
///// Update the list
newListItem.Update();
clientContext.ExecuteQuery();
result = true;
}
return result;
}
/// <summary>
/// Breaks the permissions of the list.
/// </summary>
/// <param name="clientContext">Client context</param>
/// <param name="libraryName">Name of list</param>
/// <param name="isCopyRoleAssignment">Flag to copy permission from parent</param>
/// <returns>Success flag</returns>
public static bool BreakPermission(ClientContext clientContext, string libraryName, bool isCopyRoleAssignment)
{
bool flag = false;
if (null != clientContext && !string.IsNullOrWhiteSpace(libraryName))
{
try
{
List list = clientContext.Web.Lists.GetByTitle(libraryName);
clientContext.Load(list, l => l.HasUniqueRoleAssignments);
clientContext.ExecuteQuery();
if (!list.HasUniqueRoleAssignments)
{
list.BreakRoleInheritance(isCopyRoleAssignment, true);
list.Update();
clientContext.Load(list);
clientContext.ExecuteQuery();
flag = true;
}
}
catch (Exception)
{
throw; // This will transfer control to catch block of parent function.
}
}
return flag;
}
/// <summary>
/// Sets permissions for the list.
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="AssignUserEmails">List of User emails to give permission</param>
/// <param name="permissions">Permissions for the users</param>
/// <param name="listName">List name</param>
/// <returns>String stating success flag</returns>
public static bool SetPermission(ClientContext clientContext, IList<IList<string>> AssignUserEmails, IList<string> permissions, string listName)
{
bool result = false;
if (null != clientContext && !string.IsNullOrWhiteSpace(listName))
{
ClientRuntimeContext clientRuntimeContext = clientContext;
try
{
List list = clientContext.Web.Lists.GetByTitle(listName);
clientContext.Load(list, l => l.HasUniqueRoleAssignments);
clientContext.ExecuteQuery();
if (list.HasUniqueRoleAssignments && null != permissions && null != AssignUserEmails && permissions.Count == AssignUserEmails.Count)
{
int position = 0;
foreach (string roleName in permissions)
{
IList<string> assignUserEmails = AssignUserEmails[position];
if (!string.IsNullOrWhiteSpace(roleName) && null != assignUserEmails)
{
RoleDefinition roleDefinition = clientContext.Web.RoleDefinitions.GetByName(roleName);
foreach (string user in assignUserEmails)
{
if (!string.IsNullOrWhiteSpace(user))
{
/////get the user object
Principal userPrincipal = clientContext.Web.EnsureUser(user.Trim());
/////create the role definition binding collection
RoleDefinitionBindingCollection roleDefinitionBindingCollection = new RoleDefinitionBindingCollection(clientRuntimeContext);
/////add the role definition to the collection
roleDefinitionBindingCollection.Add(roleDefinition);
/////create a RoleAssigment with the user and role definition
list.RoleAssignments.Add(userPrincipal, roleDefinitionBindingCollection);
}
}
/////execute the query to add everything
clientRuntimeContext.ExecuteQuery();
}
position++;
}
///// Success. Return a success code
result = true;
}
}
catch (Exception)
{
result = false;
}
}
return result;
}
/// <summary>
/// Validates and breaks the item level permission for the specified list item under the list/library.
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="listName">List name</param>
/// <param name="listItemId">Unique list item id to break item level permission</param>
/// <param name="isCopyRoleAssignment">Flag to copy permission from parent</param>
/// <returns>String stating success flag</returns>
public static bool BreakItemPermission(ClientContext clientContext, string listName, int listItemId, bool isCopyRoleAssignment)
{
bool result = false;
if (null != clientContext && !string.IsNullOrWhiteSpace(listName))
{
ListItem listItem = clientContext.Web.Lists.GetByTitle(listName).GetItemById(listItemId);
clientContext.Load(listItem, item => item.HasUniqueRoleAssignments);
clientContext.ExecuteQuery();
if (!listItem.HasUniqueRoleAssignments)
{
listItem.BreakRoleInheritance(isCopyRoleAssignment, true);
listItem.Update();
clientContext.ExecuteQuery();
result = true;
}
}
return result;
}
/// <summary>
/// Set permission to the specified list item
/// </summary>
/// <param name="clientContext">Client context object</param>
/// <param name="AssignUserEmails">User emails to give permission</param>
/// <param name="listName">List name</param>
/// <param name="listItemId">Unique list item id to break item level permission</param>
/// <param name="permissions">Permissions for the users</param>
/// <returns>Status of the unique item level permission assignment operation</returns>
public static bool SetItemPermission(ClientContext clientContext, IList<IList<string>> AssignUserEmails, string listName, int listItemId, IList<string> permissions)
{
bool result = false;
if (null != clientContext)
{
ClientRuntimeContext clientRuntimeContext = clientContext;
ListItem listItem = clientContext.Web.Lists.GetByTitle(listName).GetItemById(listItemId);
clientContext.Load(listItem, item => item.HasUniqueRoleAssignments);
clientContext.ExecuteQuery();
if (listItem.HasUniqueRoleAssignments && null != permissions && null != AssignUserEmails && permissions.Count == AssignUserEmails.Count)
{
int position = 0;
foreach (string roleName in permissions)
{
IList<string> assignUserEmails = AssignUserEmails[position];
if (!string.IsNullOrWhiteSpace(roleName) && null != assignUserEmails)
{
RoleDefinition roleDefinition = clientContext.Web.RoleDefinitions.GetByName(roleName);
foreach (string user in assignUserEmails)
{
if (!string.IsNullOrWhiteSpace(user))
{
/////get the user object
Principal userPrincipal = clientContext.Web.EnsureUser(user.Trim());
/////create the role definition binding collection
RoleDefinitionBindingCollection roleDefinitionBindingCollection = new RoleDefinitionBindingCollection(clientRuntimeContext);
/////add the role definition to the collection
roleDefinitionBindingCollection.Add(roleDefinition);
/////create a RoleAssigment with the user and role definition
listItem.RoleAssignments.Add(userPrincipal, roleDefinitionBindingCollection);
}
}
/////execute the query to add everything
clientRuntimeContext.ExecuteQuery();
}
position++;
}
///// Success. Return a success code
result = false;
}
}
return result;
}
/// <summary>
/// Gets the list items of specified list based on CAML query.
/// </summary>
/// <param name="clientContext">Client context</param>
/// <param name="listName">Name of the list</param>
/// <param name="camlQuery">CAML Query that need to be executed on list</param>
/// <returns>Collection of list items</returns>
public static ListItemCollection GetData(ClientContext clientContext, string listName, string camlQuery = null)
{
ListItemCollection listItemCollection = null;
if (null != clientContext && !string.IsNullOrWhiteSpace(listName))
{
try
{
CamlQuery query = new CamlQuery();
if (!string.IsNullOrWhiteSpace(camlQuery))
{
query.ViewXml = camlQuery;
listItemCollection = clientContext.Web.Lists.GetByTitle(listName).GetItems(query);
}
else
{
listItemCollection = clientContext.Web.Lists.GetByTitle(listName).GetItems(CamlQuery.CreateAllItemsQuery());
}
clientContext.Load(listItemCollection);
clientContext.ExecuteQuery();
}
catch (Exception)
{
listItemCollection = null;
throw;
}
}
return listItemCollection;
}
/// <summary>
/// Creates a new view for the list
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="matterList">List name</param>
/// <param name="viewColumnList">Name of the columns in view</param>
/// <param name="viewName">View name</param>
/// <param name="strQuery">View query</param>
/// <returns>String stating success flag</returns>
public static bool AddView(ClientContext clientContext, List matterList, string[] viewColumnList, string viewName, string strQuery)
{
bool result = true;
if (null != clientContext && null != matterList && null != viewColumnList && !string.IsNullOrWhiteSpace(viewName) && !string.IsNullOrWhiteSpace(strQuery))
try
{
View outlookView = matterList.Views.Add(new ViewCreationInformation
{
Title = viewName,
ViewTypeKind = ViewType.Html,
ViewFields = viewColumnList,
Paged = true
});
outlookView.ViewQuery = strQuery;
outlookView.Update();
clientContext.ExecuteQuery();
}
catch (Exception)
{
result = false;
}
return result;
}
/// <summary>
/// Function to check whether list is present or not.
/// </summary>
/// <param name="clientContext">Client context object for SharePoint</param>
/// <param name="listsNames">List name</param>
/// <returns>Success flag</returns>
public static List<string> Exists(ClientContext clientContext, ReadOnlyCollection<string> listsNames)
{
List<string> existingLists = new List<string>();
if (null != clientContext && null != listsNames)
{
ListCollection lists = clientContext.Web.Lists;
clientContext.Load(lists);
clientContext.ExecuteQuery();
existingLists = (from listName in listsNames
join item in lists
on listName.ToUpper(CultureInfo.InvariantCulture) equals item.Title.ToUpper(CultureInfo.InvariantCulture)
select listName).ToList();
}
return existingLists;
}
/// <summary>
/// Function to delete the list
/// </summary>
/// <param name="clientContext">Client context</param>
/// <param name="listsNames">List name</param>
/// <returns>Success flag</returns>
public static bool Delete(ClientContext clientContext, IList<string> listsNames)
{
bool result = false;
if (null != clientContext && null != listsNames)
{
ListCollection allLists = clientContext.Web.Lists;
clientContext.Load(allLists);
clientContext.ExecuteQuery();
foreach (string listName in listsNames)
{
List list = allLists.Cast<List>().FirstOrDefault(item => item.Title.ToUpperInvariant().Equals(listName.ToUpperInvariant()));
if (null != list)
{
result = true;
list.DeleteObject();
}
}
clientContext.ExecuteQuery();
}
return result;
}
/// <summary>
/// Retrieves the list item ID.
/// </summary>
/// <param name="clientContext">Client context object</param>
/// <param name="libraryName">Library name</param>
/// <param name="pageName">Page name</param>
/// <returns>List item id</returns>
public static int RetrieveItemId(ClientContext clientContext, string libraryName, string pageName)
{
int listItemId = -1;
if (null != clientContext && !string.IsNullOrWhiteSpace(libraryName) && !string.IsNullOrWhiteSpace(pageName))
{
ListItemCollection listItemCollection = GetData(clientContext, libraryName);
clientContext.Load(listItemCollection, listItemCollectionProperties => listItemCollectionProperties.Include(listItemProperties => listItemProperties.Id, listItemProperties => listItemProperties.DisplayName));
clientContext.ExecuteQuery();
ListItem listItem = listItemCollection.Cast<ListItem>().FirstOrDefault(listItemProperties => listItemProperties.DisplayName.ToUpper(CultureInfo.InvariantCulture).Equals(pageName.ToUpper(CultureInfo.InvariantCulture)));
if (null != listItem)
{
listItemId = listItem.Id;
}
}
return listItemId;
}
/// <summary>
/// To check if the folder is present in the list
/// </summary>
/// <param name="clientContext">Client context object</param>
/// <param name="folderPath">Folder path</param>
/// <param name="documentLibraryName">Document library name</param>
/// <returns>true or false</returns>
public static bool CheckFolderPresent(ClientContext clientContext, string folderPath, string documentLibraryName)
{
bool folderFound = false;
if (null != clientContext && !string.IsNullOrWhiteSpace(documentLibraryName) && !string.IsNullOrWhiteSpace(folderPath))
{
List list = clientContext.Web.Lists.GetByTitle(documentLibraryName);
ListItemCollection folderList = list.GetItems(CamlQuery.CreateAllFoldersQuery());
clientContext.Load(folderList, item => item.Include(items => items.Folder.Name, items => items.Folder.ServerRelativeUrl).Where(items => items.Folder.ServerRelativeUrl == folderPath));
clientContext.ExecuteQuery();
folderFound = 0 < folderList.Count;
}
return folderFound;
}
/// <summary>
/// Returns stream data of the file.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="documentUrl">Document URL of the document whose stream is to be retrieved</param>
/// <returns>Stream of the file</returns>
public static ClientResult<System.IO.Stream> GetStreamFromFile(ClientContext clientContext, string documentUrl)
{
ClientResult<System.IO.Stream> data = null;
if (null != clientContext && !string.IsNullOrWhiteSpace(documentUrl))
{
File file = clientContext.Web.GetFileByServerRelativeUrl(documentUrl);
data = file.OpenBinaryStream();
// Load the Stream data for the file
clientContext.Load(file);
clientContext.ExecuteQuery();
}
return data;
}
/// <summary>
/// Checks if item is modified after it is loaded on the client side
/// </summary>
/// <param name="collection">List item collection</param>
/// <param name="cachedItemModifiedDate">Date time when current user loaded the page to see/update configuration values.</param>
/// <returns>Success flag</returns>
public static bool CheckItemModified(ListItemCollection collection, string cachedItemModifiedDate)
{
bool response = false;
int errorModifiedDate = 0; // If there is new list item being created then 'cachedItemModifiedDate' will be 0
if (null != collection && !string.IsNullOrWhiteSpace(cachedItemModifiedDate))
{
if (String.Equals(Convert.ToString(errorModifiedDate, CultureInfo.InvariantCulture), cachedItemModifiedDate) && collection.Count.Equals(0)) // Verify if new item flag is true and no list item is present in the Matter Configuration list
{
response = true;
}
else if (0 < collection.Count)
{
ListItem settingsListItem = collection.FirstOrDefault();
DateTime cachedDate;
if (DateTime.TryParse(cachedItemModifiedDate, out cachedDate))
{
DateTime itemModifiedDate = Convert.ToDateTime(settingsListItem[Constants.MODIFIED_DATE_COLUMN], CultureInfo.InvariantCulture);
if (0 == DateTime.Compare(cachedDate, itemModifiedDate))
{
response = true;
}
}
}
}
return response;
}
/// <summary>
/// Sets the value of the specified property.
/// </summary>
/// <param name="clientContext">Client context</param>
/// <param name="props">Property Bag</param>
/// <param name="matterName">Name of matter to which property is to be attached</param>
/// <param name="propertyList">List of properties</param>
public static void SetPropertBagValuesForList(ClientContext clientContext, PropertyValues props, string matterName, Dictionary<string, string> propertyList)
{
if (null != clientContext && !string.IsNullOrWhiteSpace(matterName) && null != props && null != propertyList)
{
List list = clientContext.Web.Lists.GetByTitle(matterName);
foreach (var item in propertyList)
{
props[item.Key] = item.Value;
list.Update();
}
clientContext.ExecuteQuery();
}
}
/// <summary>
/// Fetches the values of property for specified matter.
/// </summary>
/// <param name="context">Client context</param>
/// <param name="matterName">Name of matter</param>
/// <param name="propertyList">List of properties</param>
/// <returns>Property list stamped to the matter</returns>
public static string GetPropertyValueForList(ClientContext context, string matterName, string propertyList)
{
string value = string.Empty;
if (null != context && !string.IsNullOrWhiteSpace(matterName) && null != propertyList)
{
ListCollection allLists = context.Web.Lists;
context.Load(allLists);
context.ExecuteQuery();
List list = allLists.Cast<List>().FirstOrDefault(item => item.Title.ToUpperInvariant().Equals(matterName.ToUpperInvariant()));
if (null != list)
{
var props = list.RootFolder.Properties;
context.Load(props);
context.ExecuteQuery();
if (null != props)
{
if (props.FieldValues.ContainsKey(propertyList))
{
value = Convert.ToString(props.FieldValues[propertyList], CultureInfo.InvariantCulture);
}
}
}
}
return value;
}
/// <summary>
/// Determines whether user has a particular permission on the list
/// </summary>
/// <param name="clientContext">Client context</param>
/// <param name="listName">List name</param>
/// <param name="permission">Permission to be checked</param>
/// <returns>Success flag</returns>
public static bool CheckPermissionOnList(ClientContext clientContext, string listName, PermissionKind permission)
{
bool returnValue = false;
if (null != clientContext && !string.IsNullOrWhiteSpace(listName))
{
ListCollection listCollection = clientContext.Web.Lists;
clientContext.Load(listCollection, lists => lists.Include(list => list.Title, list => list.EffectiveBasePermissions).Where(list => list.Title == listName));
clientContext.ExecuteQuery();
if (0 < listCollection.Count)
{
returnValue = listCollection[0].EffectiveBasePermissions.Has(permission);
}
}
return returnValue;
}
}
}

Просмотреть файл

@ -1,115 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C1760739-9EB8-4F21-BB8D-14E6EACC7CE1}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Microsoft.Legal.MatterCenter.DataLayer</RootNamespace>
<AssemblyName>Microsoft.Legal.MatterCenter.DataLayer</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<RunCodeAnalysis>true</RunCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<AssemblyOriginatorKeyFile>DataLayer.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\DocumentFormat.OpenXml.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Exchange.WebServices, Version=15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Microsoft.Exchange.WebServices.dll</HintPath>
</Reference>
<Reference Include="Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Microsoft.SharePoint.Client.dll</HintPath>
</Reference>
<Reference Include="Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Microsoft.SharePoint.Client.Runtime.dll</HintPath>
</Reference>
<Reference Include="Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Microsoft.SharePoint.Client.Search.dll</HintPath>
</Reference>
<Reference Include="Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Microsoft.SharePoint.Client.Taxonomy.dll</HintPath>
</Reference>
<Reference Include="Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Microsoft.SharePoint.Client.UserProfiles.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsAzure.ServiceRuntime, Version=2.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Microsoft.WindowsAzure.ServiceRuntime.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Microsoft.WindowsAzure.Storage.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.ServiceModel.Web" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Constants\Constants.cs" />
<Compile Include="GlobalSuppressions.cs" />
<Compile Include="Lists.cs" />
<Compile Include="Page.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="DataLayer.snk" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Просмотреть файл

@ -1,10 +0,0 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}

Просмотреть файл

@ -1,159 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.DataLayer
// Author : v-nikhid
// Created : 06-16-2015
//
// ***********************************************************************
// <copyright file="Page.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file contains methods related to SharePoint page object.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.DataLayer
{
#region using
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.WebParts;
using System;
using System.IO;
#endregion
/// <summary>
/// Performs operations related to SharePoint page.
/// </summary>
public static class Page
{
/// <summary>
/// Deletes the page
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="pageUrl">Page URL</param>
public static void Delete(ClientContext clientContext, string pageUrl)
{
if (null != clientContext && !string.IsNullOrWhiteSpace(pageUrl))
{
Microsoft.SharePoint.Client.File clientFile = clientContext.Web.GetFileByServerRelativeUrl(pageUrl);
if (IsFileExists(clientContext, pageUrl))
{
clientFile.DeleteObject();
clientContext.ExecuteQuery();
}
}
}
/// <summary>
/// Checks the file at the specified location and return the file existence status.
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="pageUrl">File URL</param>
/// <returns>Success flag</returns>
public static bool IsFileExists(ClientContext clientContext, string pageUrl)
{
bool success = false;
if (null != clientContext && !string.IsNullOrWhiteSpace(pageUrl))
{
Microsoft.SharePoint.Client.File clientFile = clientContext.Web.GetFileByServerRelativeUrl(pageUrl);
clientContext.Load(clientFile, cf => cf.Exists);
clientContext.ExecuteQuery();
success = clientFile.Exists;
}
return success;
}
/// <summary>
/// Create a web part page of matter in the document library.
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="pageName">Web part page name</param>
/// <param name="layout">Layout for the page</param>
/// <param name="listName">List/library name</param>
/// <param name="masterpagelistName">master page list name</param>
/// <param name="pageTitle">Page title</param>
/// <returns>Web part page id</returns>
public static int CreateWebPartPage(ClientContext clientContext, string pageName, string layout, string masterpagelistName, string listName, string pageTitle)
{
int response = -1;
if (null != clientContext && !string.IsNullOrWhiteSpace(pageName) && !string.IsNullOrWhiteSpace(layout) && !string.IsNullOrWhiteSpace(masterpagelistName) && !string.IsNullOrWhiteSpace(listName))
{
try
{
//// Find Default Layout from Master Page Gallery to create Web Part Page
Web web = clientContext.Web;
ListItemCollection collection = Lists.GetData(clientContext, masterpagelistName);
clientContext.Load(collection, listItemCollectionProperties => listItemCollectionProperties.Include(listItemProperties => listItemProperties.Id, listItemProperties => listItemProperties.DisplayName));
clientContext.ExecuteQuery();
ListItem fileName = null;
foreach (ListItem findLayout in collection)
{
if (findLayout.DisplayName.Equals(layout, StringComparison.OrdinalIgnoreCase))
{
fileName = findLayout;
break;
}
}
FileCreationInformation objFileInfo = new FileCreationInformation();
objFileInfo.Url = pageName;
Microsoft.SharePoint.Client.File fileLayout = fileName.File;
clientContext.Load(fileLayout);
clientContext.ExecuteQuery();
ClientResult<Stream> filedata = fileLayout.OpenBinaryStream();
List sitePageLib = web.Lists.GetByTitle(listName);
clientContext.Load(sitePageLib);
clientContext.ExecuteQuery();
StreamReader reader = new StreamReader(filedata.Value);
objFileInfo.Content = System.Text.Encoding.ASCII.GetBytes(reader.ReadToEnd());
Microsoft.SharePoint.Client.File matterLandingPage = sitePageLib.RootFolder.Files.Add(objFileInfo);
ListItem matterLandingPageDetails = matterLandingPage.ListItemAllFields;
// Update the title of the page
matterLandingPageDetails[Constants.TITLE] = pageTitle;
matterLandingPageDetails.Update();
clientContext.Load(matterLandingPageDetails, matterLandingPageProperties => matterLandingPageProperties[Constants.TITLE], matterLandingPageProperties => matterLandingPageProperties.Id);
clientContext.ExecuteQuery();
response = matterLandingPageDetails.Id;
}
catch (Exception)
{
response = -1;
}
}
return response;
}
/// <summary>
/// Adds all web parts on matter landing page.
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="limitedWebPartManager">LimitedWebPartManager object to import web parts</param>
/// <param name="webPartDefinition">WebPartDefinition object to add web parts on page</param>
/// <param name="webParts">Array of web parts that should be added on Matter Landing Page</param>
/// <param name="zones">Array of Zone IDs</param>
/// <returns>Success flag</returns>
public static bool AddWebPart(ClientContext clientContext, LimitedWebPartManager limitedWebPartManager, WebPartDefinition webPartDefinition, string[] webParts, string[] zones)
{
bool result = false;
if (null != clientContext && null != limitedWebPartManager && null != webParts && null != zones)
{
int index = 0;
try
{
for (index = 0; index < webParts.Length; index++)
{
if (!string.IsNullOrWhiteSpace(webParts[index]))
{
webPartDefinition = limitedWebPartManager.ImportWebPart(webParts[index]);
limitedWebPartManager.AddWebPart(webPartDefinition.WebPart, zones[index], Constants.ZONEINDEX);
clientContext.ExecuteQuery();
}
}
}
catch (Exception)
{
result = false;
}
}
return result;
}
}
}

Просмотреть файл

@ -1,81 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.Entity
// Author : v-akvira
// Created : 04-01-2014
//
// ***********************************************************************
// <copyright file="Enumerators.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file defines enumerators used under current project.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.Entity
{
/// <summary>
/// Provides set of enumerators available in Matter Center.
/// </summary>
public static class Enumerators
{
/// <summary>
/// Supports selection of enumerator to refer to local/global resource file.
/// </summary>
public enum ResourceFileLocation
{
/// <summary>
/// The resource file refers to App_GlobalResource folder.
/// </summary>
App_GlobalResources,
/// <summary>
/// The resource file refers to App_LocalResource folder.
/// </summary>
App_LocalResources,
/// <summary>
/// The resource file refers to bin folder.
/// </summary>
bin
}
/// <summary>
/// Matter Landing page section mapping
/// </summary>
public enum MatterLandingSection
{
/// <summary>
/// Task panel mapping
/// </summary>
TaskPanel,
/// <summary>
/// Calendar panel mapping
/// </summary>
CalendarPanel,
/// <summary>
/// Footer panel mapping
/// </summary>
FooterPanel,
/// <summary>
/// Information panel mapping
/// </summary>
InformationPanel,
/// <summary>
/// Header panel mapping
/// </summary>
HeaderPanel,
/// <summary>
/// RSS Title panel mapping
/// </summary>
RSSTitlePanel,
/// <summary>
/// OneNote panel mapping
/// </summary>
OneNotePanel
}
}
}

Двоичный файл не отображается.

Просмотреть файл

@ -1,297 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.Entity
// Author : v-swmirj
// Created : 06-19-2014
//
// ***********************************************************************
// <copyright file="LegalBriefcaseObject.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file provides the structure required for briefcase operations. It includes the document ID and URL.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.Entity
{
#region using
using System.Collections.Generic;
#endregion
/// <summary>
/// Provides the structure required for Matter Center briefcase operations. It includes the document ID and URL.
/// </summary>
public class BriefcaseDetails
{
/// <summary>
/// Gets or sets document ID. Represents the unique document in matter library.
/// </summary>
/// <value>The document identifier.</value>
public string DocumentId
{
get;
set;
}
/// <summary>
/// Gets or sets document URL. Represents the URL of document in matter library.
/// </summary>
/// <value>The document URL.</value>
public string DocumentUrl
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to perform briefcase operations (Update Copy, Matter Check In, and Matter Check Out and Detach) for particular briefcase document.
/// </summary>
public class SyncDetails
{
/// <summary>
/// Gets or sets List ID of the item.
/// </summary>
/// <value>The list identifier.</value>
public string ListId
{
get;
set;
}
/// <summary>
/// Gets or sets list of item ID. Represents the items selected in briefcase operations.
/// </summary>
/// <value>The item identifier.</value>
public IList<int> ItemId
{
get;
set;
}
/// <summary>
/// Gets or sets the Integer value specifying the type of operation i.e. Update Copy, Matter Check In, and Matter Check Out and Detach.
/// </summary>
/// <value>The briefcase operation.</value>
public int Operation
{
get;
set;
}
}
/// <summary>
/// Provides the response/status of each document in legal briefcase operation.
/// </summary>
public class ResponseDetails
{
/// <summary>
/// Gets or sets the status of operation requested. Indicates whether the operation was success/failure.
/// </summary>
/// <value>The status of operation.</value>
public string Status
{
get;
set;
}
/// <summary>
/// Gets or sets the list of file names returned. Represents the files involved in the operation.
/// </summary>
/// <value>The file names.</value>
public IList<string> FileNames
{
get;
set;
}
}
/// <summary>
/// Provides the version details, status flag, and success/error message, relative URL for document after briefcase operation.
/// </summary>
public class VersionDetails
{
/// <summary>
/// Initializes a new instance of the <see cref="VersionDetails"/> class.
/// </summary>
public VersionDetails()
{
this.IsMajorVersion = new List<bool>();
this.IsMinorVersion = new List<bool>();
this.CurrentMinorVersion = new List<string>();
this.CurrentMajorVersion = new List<string>();
this.CheckOutStatus = new List<string>();
this.RelativeURL = new List<string>();
}
/// <summary>
/// Gets or sets a value indicating whether this <see cref="VersionDetails"/> is having status.
/// </summary>
/// <value>The status indicating whether the document is checked out by logged-in user or not.</value>
public bool Status
{
get;
set;
}
/// <summary>
/// Gets or sets boolean indicator for major version.
/// </summary>
/// <value>The major version.</value>
public IList<bool> IsMajorVersion
{
get;
set;
}
/// <summary>
/// Gets or sets boolean indicator for minor version.
/// </summary>
/// <value>The minor version.</value>
public IList<bool> IsMinorVersion
{
get;
set;
}
/// <summary>
/// Gets or sets minor version of the item.
/// </summary>
/// <value>The current minor version.</value>
public IList<string> CurrentMinorVersion
{
get;
set;
}
/// <summary>
/// Gets or sets major version of the item.
/// </summary>
/// <value>The current major version.</value>
public IList<string> CurrentMajorVersion
{
get;
set;
}
/// <summary>
/// Gets or sets check out status for the item.
/// </summary>
/// <value>The check out status.</value>
public IList<string> CheckOutStatus
{
get;
set;
}
/// <summary>
/// Gets or sets relative URL of the items.
/// </summary>
/// <value>The relative URL.</value>
public IList<string> RelativeURL
{
get;
set;
}
/// <summary>
/// Gets or sets the error message.
/// </summary>
/// <value>The error message.</value>
public string ErrorMessage
{
get;
set;
}
}
/// <summary>
/// Provides the file names, status, success/error message for briefcase operation.
/// </summary>
public class CommonResponse
{
/// <summary>
/// Initializes a new instance of the <see cref="CommonResponse"/> class.
/// </summary>
public CommonResponse()
{
this.Status = new List<bool>();
this.FileNames = new List<string>();
}
/// <summary>
/// Gets or sets the status of the request. Indicates whether the operation was success/failure.
/// </summary>
/// <value>The status.</value>
public IList<bool> Status
{
get;
set;
}
/// <summary>
/// Gets or sets relative URL of the file. Represents the files involved in the operation.
/// </summary>
/// <value>The file names.</value>
public IList<string> FileNames
{
get;
set;
}
/// <summary>
/// Gets or sets the error message. Represents the error details in case of operation failure.
/// </summary>
/// <value>The error message.</value>
public string ErrorMessage
{
get;
set;
}
}
/// <summary>
/// Provides the structure required for mail attachment meta-data. It includes full URL of mail and flag to overwrite existing files, if present.
/// </summary>
public class MailAttachmentDetails
{
/// <summary>
/// Gets or sets the full URL of mail attachment.
/// </summary>
/// <value>The full URL.</value>
public string FullUrl
{
get;
set;
}
/// <summary>
/// Gets or sets overwrite option for mail attachment.
/// </summary>
/// <value>The overwrite.</value>
public int IsOverwrite
{
get;
set;
}
/// <summary>
/// Gets or sets file position where check out failed
/// </summary>
public static int CheckoutFailedPosition
{
get;
set;
}
/// <summary>
/// Gets or sets value based on attachment call for mail attachment.
/// </summary>
/// <value>The Attachment Flag.</value>
public bool IsAttachmentCall
{
get;
set;
}
}
}

Двоичный файл не отображается.

Просмотреть файл

@ -1,923 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.Entity
// Author : v-nikhid
// Created : 06-19-2014
//
// ***********************************************************************
// <copyright file="MatterProvisionObjects.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file defines classes used under current project.</summary>
// ***********************************************************************
//// Keeping using System over here because of usage of CLSComplaint attribute for namespace
using System;
[assembly: CLSCompliant(true)]
namespace Microsoft.Legal.MatterCenter.Entity
{
#region using
using System;
using System.Collections.Generic;
#endregion
/// <summary>
/// Holds the SP app token to authenticate current request.
/// </summary>
[CLSCompliant(true)]
public class RequestObject
{
/// <summary>
/// Gets or sets the SP application token. Represents the token for authenticated user.
/// </summary>
/// <value>The SP application token.</value>
public string SPAppToken
{
get;
set;
}
/// <summary>
/// Gets or sets the refresh token. Represents the token used for single sign-on.
/// </summary>
/// <value>The refresh token.</value>
public string RefreshToken
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to hold flag values
/// </summary>
public class MatterProvisionFlags
{
/// <summary>
/// Gets or sets value for matter landing flag
/// </summary>
/// <value>Matter landing</value>
public string MatterLandingFlag
{
get;
set;
}
/// <summary>
/// Gets or sets boolean value for send email flag
/// </summary>
/// <value>Send email</value>
public bool SendEmailFlag
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to hold client meta-data. It includes client unique ID, client name, and client URL.
/// </summary>
public class Client
{
/// <summary>
/// Gets or sets the client identifier. Represents the unique identifier for client.
/// </summary>
/// <value>The client identifier.</value>
public string Id
{
get;
set;
}
/// <summary>
/// Gets or sets the name of the client. Represents the unique name of client.
/// </summary>
/// <value>The name of the client.</value>
public string Name
{
get;
set;
}
/// <summary>
/// Gets or sets the client URL.
/// </summary>
/// <value>The client URL.</value>
public string Url
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to hold matter meta-data. It includes matter ID, name, description, conflict details, allowed teams, blocked users, permissions, and content type.
/// </summary>
public class Matter
{
/// <summary>
/// Gets or sets the matter identifier. Represents the matter ID under a client.
/// </summary>
/// <value>The matter identifier.</value>
public string Id
{
get;
set;
}
/// <summary>
/// Gets or sets the name of the matter. Represents the matter name under a client.
/// </summary>
/// <value>The name of the matter.</value>
public string Name
{
get;
set;
}
/// <summary>
/// Gets or sets the matter description. Represents the description of matter library.
/// </summary>
/// <value>The matter description.</value>
public string Description
{
get;
set;
}
/// <summary>
/// Gets or sets the matter conflict meta-data. Represents conflict checked by user, conflict check date, and security of matter from external users.
/// </summary>
/// <value>The conflict.</value>
public Conflict Conflict
{
get;
set;
}
/// <summary>
/// Gets or sets the user names. Represents the user names associated with the matter.
/// </summary>
/// <value>The user names.</value>
public IList<string> UserNames
{
get;
set;
}
/// <summary>
/// Gets or sets the content types. Represents all the content types associated with the matter library.
/// </summary>
/// <value>The content types.</value>
public IList<string> ContentTypes
{
get;
set;
}
/// <summary>
/// Gets or sets the assigned user names. Represents the team members and responsible attorneys associated with the matter.
/// </summary>
/// <value>The assign user names.</value>
public IList<IList<string>> AssignUserNames
{
get;
set;
}
/// <summary>
/// Gets or sets the assigned user email addresses. Represents the team members associated with the project.
/// </summary>
/// <value>The list of assign user email addresses.</value>
public IList<IList<string>> AssignUserEmails
{
get;
set;
}
/// <summary>
/// Gets or sets the blocked user names. Represents the users who are blocked from viewing the matter details.
/// </summary>
/// <value>The block user names.</value>
public IList<string> BlockUserNames
{
get;
set;
}
/// <summary>
/// Gets or sets the permissions. Represents the permission levels associated with the matter.
/// </summary>
/// <value>The permissions.</value>
public IList<string> Permissions
{
get;
set;
}
/// <summary>
/// Gets or sets the roles. Represents the role of users associated with the matter.
/// </summary>
/// <value>The roles.</value>
public IList<string> Roles
{
get;
set;
}
/// <summary>
/// Gets or sets the folder names. Represents the list of folders that will be created with the matter.
/// </summary>
/// <value>The folder names.</value>
public IList<string> FolderNames
{
get;
set;
}
/// <summary>
/// Gets or sets the default content type.
/// </summary>
/// <value>The default content type.</value>
public string DefaultContentType
{
get;
set;
}
/// <summary>
/// Gets or sets the Document template count. Represents the document templates count of matter.
/// </summary>
/// <value>The Document template count.</value>
public IList<string> DocumentTemplateCount
{
get;
set;
}
///// <summary>
///// Gets or sets the Matter GUID.
///// </summary>
///// <value>The Matter GUID.</value>
public string MatterGuid
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to hold matter conflict meta-data. It includes user who performed the conflict check, the conflict check date, and security of matter from external users.
/// </summary>
public class Conflict
{
/// <summary>
/// Gets or sets the user who performed the conflict check for matter.
/// </summary>
/// <value>The conflict check by.</value>
public string CheckBy
{
get;
set;
}
/// <summary>
/// Gets or sets the conflict check date for matter.
/// </summary>
/// <value>The conflict check on.</value>
public string CheckOn
{
get;
set;
}
/// <summary>
/// Gets or sets the conflict identified option (Yes/No) for matter. Represents if the conflict was identified or not.
/// </summary>
/// <value>The conflict identified.</value>
public string Identified
{
get;
set;
}
/// <summary>
/// Gets or sets the flag to mark the matter as secure or not.
/// </summary>
/// <value>The secure matter.</value>
public string SecureMatter
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to hold additional matter meta-data. It includes matter practice group, area of law, sub area of law, responsible attorney, team members, and blocked users.
/// </summary>
public class MatterDetails
{
/// <summary>
/// Gets or sets the practice group associated with the matter.
/// </summary>
/// <value>The practice group.</value>
public string PracticeGroup
{
get;
set;
}
/// <summary>
/// Gets or sets the area of law associated with the matter.
/// </summary>
/// <value>The area of law.</value>
public string AreaOfLaw
{
get;
set;
}
/// <summary>
/// Gets or sets the sub area of law associated with the matter.
/// </summary>
/// <value>The sub area of law.</value>
public string SubareaOfLaw
{
get;
set;
}
/// <summary>
/// Gets or sets the responsible attorney associated with the matter.
/// </summary>
/// <value>The responsible attorney.</value>
public string ResponsibleAttorney
{
get;
set;
}
/// <summary>
/// Gets or sets the responsible attorney email associated with the matter.
/// </summary>
/// <value>The list of responsible attorney email addresses.</value>
public string ResponsibleAttorneyEmail
{
get;
set;
}
/// <summary>
/// Gets or sets the team members associated with the matter.
/// </summary>
/// <value>The team members.</value>
public string TeamMembers
{
get;
set;
}
/// <summary>
/// Gets or sets the users who can only view the matter.
/// </summary>
/// <value>The upload blocked users.</value>
public IList<string> UploadBlockedUsers
{
get;
set;
}
/// <summary>
/// Gets or sets the role information associated with the matter.
/// </summary>
/// <value>The team members.</value>
public string RoleInformation
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to hold role meta-data. It includes role ID, name, and flag indicating whether role is mandatory or not.
/// </summary>
public class Role
{
/// <summary>
/// Gets or sets the role identifier. Represents the role identifier.
/// </summary>
/// <value>The role identifier.</value>
public string Id
{
get;
set;
}
/// <summary>
/// Gets or sets the name of the role. Represents the role name.
/// </summary>
/// <value>The name of the role.</value>
public string Name
{
get;
set;
}
/// <summary>
/// Gets or sets a value indicating whether this <see cref="Role"/> is mandatory.
/// </summary>
/// <value><c>true</c> if mandatory; otherwise, <c>false</c>.</value>
public bool Mandatory
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to hold user meta-data. It includes user ID, name/alias, logged-in user name, and email.
/// </summary>
public class Users
{
/// <summary>
/// Gets or sets the user name.
/// </summary>
/// <value>The name of the user.</value>
public string Name
{
get;
set;
}
/// <summary>
/// Gets or sets the logged-in user name.
/// </summary>
/// <value>The name of the user log on.</value>
public string LogOnName
{
get;
set;
}
/// <summary>
/// Gets or sets the user email.
/// </summary>
/// <value>The user email.</value>
public string Email
{
get;
set;
}
/// <summary>
/// Gets or sets the entity type (user or security group).
/// </summary>
public string EntityType
{
get;
set;
}
/// <summary>
/// Gets or sets the Provider name indicating tenant or extranet user
/// </summary>
public string ProviderName
{
get;
set;
}
/// <summary>
/// Gets or sets the entity data returned from people picker web service
/// </summary>
public EntityData EntityData { get; set; }
}
/// <summary>
/// Provides the structure required to hold term store meta-data. It includes term group, term set, and additional custom property.
/// </summary>
public class TermStoreDetails
{
/// <summary>
/// Gets or sets the term group. Represents the name of parent node of term store.
/// </summary>
/// <value>The term group.</value>
public string TermGroup
{
get;
set;
}
/// <summary>
/// Gets or sets the name of the term set. Represents the term sets under term group.
/// </summary>
/// <value>The name of the term set.</value>
public string TermSetName
{
get;
set;
}
/// <summary>
/// Gets or sets the name of the custom property. Represents custom properties associated with each term.
/// </summary>
/// <value>The name of the custom property.</value>
public string CustomPropertyName
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to hold user meta-data retrieved from client people picker web service.
/// </summary>
public class PeoplePickerUser
{
/// <summary>
/// Gets or sets the user logon name.
/// </summary>
public string Key { get; set; }
/// <summary>
/// Gets or sets the user email.
/// </summary>
public string Description { get; set; }
/// <summary>
/// Gets or sets the user display name.
/// </summary>
public string DisplayText { get; set; }
/// <summary>
/// Gets or sets the Provider name indicating tenant or extranet user
/// </summary>
public string ProviderName { get; set; }
/// <summary>
/// Gets or sets the entity type (user or security group).
/// </summary>
public string EntityType { get; set; }
/// <summary>
/// Gets or sets the entity data returned from people picker web service
/// </summary>
public EntityData EntityData { get; set; }
}
/// <summary>
/// Holds the structure of entity data returned from people picker web service.
/// </summary>
public class EntityData
{
/// <summary>
/// Gets or sets the title of user or security group
/// </summary>
public string Title { get; set; }
/// <summary>
/// Gets or sets the department of user or security group
/// </summary>
public string Department { get; set; }
/// <summary>
/// Gets or sets the email of user or security group
/// </summary>
public string Email { get; set; }
}
/// <summary>
/// Provides the structure required to hold matter property bag information (stamped properties).
/// </summary>
public class MatterStampedDetails
{
/// <summary>
/// Indicates if the matter is old or new
/// </summary>
public string IsNewMatter { get; set; }
/// <summary>
/// Provides the structure required to hold matter meta-data. It includes matter ID, name, description, conflict details, allowed teams, blocked users, permissions, and content type.
/// </summary>
public Matter MatterObject { get; set; }
/// <summary>
/// Provides the structure required to hold additional matter meta-data. It includes matter practice group, area of law, sub area of law, responsible attorney, team members, and blocked users.
/// </summary>
public MatterDetails MatterDetailsObject { get; set; }
/// <summary>
/// Provides the structure required to hold client meta-data. It includes client unique ID, client name, and client URL.
/// </summary>
public Client ClientObject { get; set; }
}
/// <summary>
/// Provides the structure needed to revert the matter permission update operation.
/// </summary>
[CLSCompliant(false)]
public class MatterRevertList
{
/// <summary>
/// Gets or sets a matter library instance
/// </summary>
public string MatterLibrary { get; set; }
/// <summary>
/// Gets or sets a matter OneNote library instance
/// </summary>
public string MatterOneNoteLibrary { get; set; }
/// <summary>
/// Gets or sets a matter calendar instance
/// </summary>
public string MatterCalendar { get; set; }
/// <summary>
/// Gets or sets a matter site pages instance
/// </summary>
public string MatterSitePages { get; set; }
/// <summary>
/// Gets or sets a matter task instance
/// </summary>
public string MatterTask { get; set; }
}
/// <summary>
/// Represents configuration for the matter. Holds value for various entities on the Matter Provision page
/// </summary>
public class MatterConfigurations
{
/// <summary>
/// Gets or sets the name of the matter. Represents the name of matter library.
/// </summary>
/// <value>The default name of the matter.</value>
public string DefaultMatterName
{
get;
set;
}
/// <summary>
/// Gets or sets the default matter id
/// </summary>
/// <value>The default matter id</value>
public string DefaultMatterId
{
get;
set;
}
/// <summary>
/// Gets or sets the default matter type
/// </summary>
/// <value>The default matter type</value>
public string DefaultMatterType
{
get;
set;
}
/// <summary>
/// Gets or sets the matter types
/// </summary>
/// <value>The matter types</value>
public string MatterTypes
{
get;
set;
}
/// <summary>
/// Gets or sets the users of the matters
/// </summary>
/// <value>The matter users</value>
public string MatterUsers
{
get;
set;
}
/// <summary>
/// Gets or sets the emails for users of the projects
/// </summary>
/// <value>The list of matter center user emails</value>
public string MatterUserEmails
{
get;
set;
}
/// <summary>
/// Gets or sets the matter roles for the users
/// </summary>
/// <value>The matter roles for the users</value>
public string MatterRoles
{
get;
set;
}
/// <summary>
/// Gets or sets the matter permissions
/// </summary>
/// <value>The matter permissions</value>
public string MatterPermissions
{
get;
set;
}
/// <summary>
/// Gets or sets the flag for calendar selection on settings page
/// </summary>
/// <value>Calendar selected flag</value>
public bool IsCalendarSelected
{
get;
set;
}
/// <summary>
/// Gets or sets the email option selection flag
/// </summary>
/// <value>The email option selection flag</value>
public bool IsEmailOptionSelected
{
get;
set;
}
/// <summary>
/// Gets or sets the RSS selection flag
/// </summary>
/// <value>The RSS selection flag</value>
public bool IsRSSSelected
{
get;
set;
}
/// <summary>
/// Gets or sets the matter id.
/// </summary>
/// <value>The matter id.</value>
public bool IsRestrictedAccessSelected
{
get;
set;
}
/// <summary>
/// Gets or sets the conflict check flag
/// </summary>
/// <value>The conflict check visibility flag</value>
public bool IsConflictCheck
{
get;
set;
}
/// <summary>
/// Gets or sets the matter description mandatory flag
/// </summary>
/// <value>The matter description mandatory flag</value>
public bool IsMatterDescriptionMandatory
{
get;
set;
}
/// <summary>
/// Gets or sets the matter practice group
/// </summary>
/// <value>The matter group</value>
public string MatterPracticeGroup
{
get;
set;
}
/// <summary>
/// Gets or sets the matter area of law
/// </summary>
/// <value>The matter area of law</value>
public string MatterAreaofLaw
{
get;
set;
}
/// <summary>
/// Gets or sets the content check property
/// </summary>
/// <value>The content check property</value>
public bool IsContentCheck
{
get;
set;
}
/// <summary>
/// Gets or sets the tasks selected property
/// </summary>
/// <value>The tasks selected property</value>
public bool IsTaskSelected
{
get;
set;
}
}
/// <summary>
/// Provides the structure required to hold additional matter meta-data for default values from term store. It includes term store information for matter, client, practice group, area of law and sub area of law.
/// </summary>
public class MatterMetadata
{
/// <summary>
/// Gets or sets the matter property
/// </summary>
public Matter Matter
{
get;
set;
}
/// <summary>
/// Gets or sets the client property
/// </summary>
public Client Client
{
get;
set;
}
/// <summary>
/// Gets or sets the practice group property
/// </summary>
public PracticeGroupTerm PracticeGroupTerm
{
get;
set;
}
/// <summary>
/// Gets or sets the area of law property
/// </summary>
public AreaTerm AreaTerm
{
get;
set;
}
/// <summary>
/// Gets or sets the Subarea of law property
/// </summary>
public SubareaTerm SubareaTerm
{
get;
set;
}
}
}

Просмотреть файл

@ -1,87 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{04B6E5BA-DE44-4E40-9496-EE12F658DE67}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Microsoft.Legal.MatterCenter.Entity</RootNamespace>
<AssemblyName>Microsoft.Legal.MatterCenter.Entity</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<RunCodeAnalysis>true</RunCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<RunCodeAnalysis>true</RunCodeAnalysis>
</PropertyGroup>
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<AssemblyOriginatorKeyFile>MatterCenterEntity.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.SharePoint.Client, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<HintPath>..\External\Microsoft.SharePoint.Client.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.SharePoint.Client.Runtime, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<HintPath>..\External\Microsoft.SharePoint.Client.Runtime.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\External\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Enumerators.cs" />
<Compile Include="GlobalSuppressions.cs" />
<Compile Include="LegalBriefcaseObject.cs" />
<Compile Include="MatterProvisionObjects.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SearchObjects.cs" />
<Compile Include="TermStoreHelper.cs" />
</ItemGroup>
<ItemGroup>
<None Include="MatterCenterEntity.snk" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Просмотреть файл

@ -1,10 +0,0 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,357 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.Entity
// Author : v-rijadh
// Created : 06-19-2014
//
// ***********************************************************************
// <copyright file="TermStoreHelper.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file defines classes used by Term Store object.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.Entity
{
#region using
using System.Collections.Generic;
#endregion
/// <summary>
/// Provides the structure required for client term set. It includes term set name and list of terms under the term set.
/// </summary>
public class ClientTermSets
{
/// <summary>
/// Gets or sets the term name.
/// </summary>
/// <value>The name.</value>
public string Name
{
get;
set;
}
/// <summary>
/// Gets or sets the list of client terms present under the clients term set.
/// </summary>
/// <value>The client terms.</value>
public IList<Client> ClientTerms
{
get;
set;
}
}
/// <summary>
/// Provides the structure required for sub area of law term. It includes sub area of law, area of law, folders, folder structure flag, id , wssid and document template.
/// </summary>
public class SubareaTerm
{
/// <summary>
/// Gets or sets the name of the term (sub area of law).
/// </summary>
/// <value>The name of the term.</value>
public string TermName
{
get;
set;
}
/// <summary>
/// Gets or sets the name of the parent term (area of law).
/// </summary>
/// <value>The name of the parent term.</value>
public string ParentTermName
{
get;
set;
}
/// <summary>
/// Gets or sets the folder names. This is used for creation of folders when a matter is created.
/// </summary>
/// <value>The folder names.</value>
public string FolderNames
{
get;
set;
}
/// <summary>
/// Gets or sets the is no folder structure present. If flag is not set, it will navigate to parent term to get the folder names.
/// </summary>
/// <value>The is no folder structure present.</value>
public string IsNoFolderStructurePresent
{
get;
set;
}
/// <summary>
/// Gets or sets the document templates. This will be the default content type associated with the document library.
/// </summary>
/// <value>The document templates.</value>
public string DocumentTemplates
{
get;
set;
}
/// <summary>
/// Gets or sets the document template names. It includes all the content types that will be available for a document library.
/// </summary>
/// <value>The document template names.</value>
public string DocumentTemplateNames
{
get;
set;
}
/// <summary>
/// Gets or sets the id of the term (sub area of law). This is a GUID value (string representation) and is used as the Id property of the Term.
/// </summary>
/// <value>The id of the term.</value>
public string Id
{
get;
set;
}
/// <summary>
/// Gets or sets the WssID of the term (sub area of law). This is an integer value being used as the Id of the Term in the TaxonomyHiddenList.
/// </summary>
/// <value>The WssID of the term.</value>
public int WssId
{
get;
set;
}
}
/// <summary>
/// Provides the structure required for area of law term. It includes area of law, practice group, id , wssid and list of sub area of law.
/// </summary>
public class AreaTerm
{
/// <summary>
/// Gets or sets the name of the term (area of law).
/// </summary>
/// <value>The name of the term.</value>
public string TermName
{
get;
set;
}
/// <summary>
/// Gets or sets the name of the parent term (practice group).
/// </summary>
/// <value>The name of the parent term.</value>
public string ParentTermName
{
get;
set;
}
/// <summary>
/// Gets or sets the folder names. This is used for creation of folders when a matter is created.
/// </summary>
/// <value>The folder names.</value>
public string FolderNames
{
get;
set;
}
/// <summary>
/// Gets or sets the sub area terms. It includes the list of sub area of law falling under particular area of law.
/// </summary>
/// <value>The sub area terms.</value>
public IList<SubareaTerm> SubareaTerms
{
get;
set;
}
/// <summary>
/// Gets or sets the id of the term (area of law). This is a GUID value (string representation) and is used as the Id property of the Term.
/// </summary>
/// <value>The id of the term.</value>
public string Id
{
get;
set;
}
/// <summary>
/// Gets or sets the WssId of the term (area of law). This is an integer value being used as the Id of the Term in the TaxonomyHiddenList.
/// </summary>
/// <value>The WssId of the term.</value>
public int WssId
{
get;
set;
}
}
/// <summary>
/// Provides the structure required for practice group term set. It includes the practice group, client term set, folders, id , wssid, and list of area team under practice group.
/// </summary>
public class PracticeGroupTerm
{
/// <summary>
/// Gets or sets the name of the term (practice group).
/// </summary>
/// <value>The name of the term.</value>
public string TermName
{
get;
set;
}
/// <summary>
/// Gets or sets the name of the parent term (client term set).
/// </summary>
/// <value>The name of the parent term.</value>
public string ParentTermName
{
get;
set;
}
/// <summary>
/// Gets or sets the folder names. This is used for creation of folders when a matter is created.
/// </summary>
/// <value>The folder names.</value>
public string FolderNames
{
get;
set;
}
/// <summary>
/// Gets or sets all the area of law under particular practice group.
/// </summary>
/// <value>The area terms.</value>
public IList<AreaTerm> AreaTerms
{
get;
set;
}
/// <summary>
/// Gets or sets the id of the term (practice group). This is a GUID value (string representation) and is used as the Id property of the Term.
/// </summary>
/// <value>The id of the term.</value>
public string Id
{
get;
set;
}
/// <summary>
/// Gets or sets the WssId of the term (practice group). This is an integer value being used as the Id of the Term in the TaxonomyHiddenList.
/// </summary>
/// <value>The WssId of the term.</value>
public int WssId
{
get;
set;
}
}
/// <summary>
/// Provides the structure required for generic term sets. It includes the term set name and list of practice group under that term set.
/// </summary>
public class TermSets
{
/// <summary>
/// Gets or sets the term set name.
/// </summary>
/// <value>The name.</value>
public string Name
{
get;
set;
}
/// <summary>
/// Gets or sets the list of practice group terms.
/// </summary>
/// <value>The PG terms.</value>
public IList<PracticeGroupTerm> PGTerms
{
get;
set;
}
}
/// <summary>
/// Provides the structure required for generic term groups. It includes the term group name and the list of term sets under the group.
/// </summary>
public class TermGroups
{
/// <summary>
/// Gets or sets the term group name.
/// </summary>
/// <value>The name.</value>
public string Name
{
get;
set;
}
/// <summary>
/// Gets or sets the list of term sets under the term group.
/// </summary>
/// <value>The term sets.</value>
public IList<TermSets> TermSets
{
get;
set;
}
}
/// <summary>
/// Provides the structure required for generic term stores. It includes the term store and the list of term group under the term store.
/// </summary>
public class TermStores
{
/// <summary>
/// Gets or sets the term store name.
/// </summary>
/// <value>The name.</value>
public string Name
{
get;
set;
}
/// <summary>
/// Gets or sets the list of term groups under the term store.
/// </summary>
/// <value>The term groups.</value>
public IList<TermGroups> TermGroups
{
get;
set;
}
}
/// <summary>
/// Provides the structure required for generic collection of term stores.
/// </summary>
public class TermStoreObject
{
/// <summary>
/// Gets or sets the list of term stores.
/// </summary>
/// <value>The term stores.</value>
public IList<TermStores> TermStores
{
get;
set;
}
}
}

Просмотреть файл

@ -0,0 +1,3 @@
{
"directory": "./lib"
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,105 @@
<!DOCTYPE html>
<html>
<head>
<title>Jasmine</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="shortcut icon" type="image/png" href="lib/jasmine-2.4.1/jasmine_favicon.png" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="/lib/jasmine-2.4.1/jasmine.js"></script>
<link href="/lib/jasmine-2.4.1/jasmine.css" rel="stylesheet" />
<script src="/lib/jasmine-2.4.1/jasmine-html.js"></script>
<script src="/lib/jasmine-2.4.1/boot.js"></script>
<script src="/lib/jasmine-2.4.1/console.js"></script>
<script data-require="angular-mocks" data-semver="1.2.1" src="//code.angularjs.org/1.2.1/angular-mocks.js"></script>
<script src="/lib/jquery/dist/jquery.js"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="/lib/angular-route/angular-route.js"></script>
<script data-require="angular-mocks" data-semver="1.2.1" src="//code.angularjs.org/1.2.1/angular-mocks.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.15/angular-ui-router.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.16/angular-touch.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.2/angular-animate.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap-tooltip.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap-popover.js"></script>
<script src="/lib/angular-resource/angular-resource.js"></script>
<script src="/lib/angular-sanitize/angular-sanitize.js"></script>
<script src="/lib/adal-angular/dist/adal.min.js"></script>
<script src="/lib/adal-angular/dist/adal-angular.min.js"></script>
<script src="/lib/angular-ui-grid/ui-grid.min.js"></script>
<script src="/lib/angular-bootstrap/ui-bootstrap-tpls.js"></script>
<script src="/scripts/site.js" asp-append-version="true"></script>
<script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-sanitize.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/app.js"></script>
</head>
<body>
<div id="errorBlock" class="hide">
</div>
<div id="errTrinagleBlock" class="hide">
</div>
<div id="errTrinagleBroderBlock" class="hide">
</div>
<div id="errText" class="hide">
</div>
<div id="txtUser1" class="hide">
</div>
<script src="/Object/ObjectCollection.js"></script>
<script src="Scripts/uiconfig.js"></script>
<script src="Scripts/TestConfig.js"></script>
<!--<script src="http://matterwebapp.azurewebsites.net/app/uiconfig.js"></script>-->
<script src="http://matterwebapp.azurewebsites.net/app/app.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/config.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/directives/heading.directive.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/directives/common.directive.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/home.controller.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/navigation.controller.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/services/auth.service.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/services/api.service.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/matter/matter.resources.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/matter/matters.controller.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/home.controller.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/dashboard/documentdashboard.resources.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/dashboard/documentdashboard.controller.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/dashboard/matterdashboard.resources.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/dashboard/matterdashboard.controller.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/matter/upload.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/document/documents.controller.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/document/document.resources.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/directives/drag.directive.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/directives/drop.directive.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/home.resources.js"></script>
<script src="http://matterwebapp.azurewebsites.net/app/matter/createMatter.controller.js"></script>
<script src="/Scripts/app.js"></script>
<script src="Specs/CreateMatterController.spec.js"></script>
<script src="Specs/CreateMatterControllerservicecall.spec.js"></script>
<script src="Specs/DocumentController.spec.js"></script>
<script src="Specs/DocumentControllerservicecall.spec.js"></script>
<script src="Specs/DocumentDashboardController.spec.js"></script>
<script src="Specs/DocumentDashboardControllerServiceCall.spec.js"></script>
<script src="Specs/HomeController.spec.js"></script>
<script src="Specs/HomeControllerservicecall.spec.js"></script>
<script src="Specs/MatterController.spec.js"></script>
<script src="Specs/MatterControllerservicecall.spec.js"></script>
<script src="Specs/MatterDashboardController.spec.js"></script>
<script src="Specs/MatterDashboardControllerservicecall.spec.js"></script>
<script src="Specs/NavigationController.spec.js"></script>
</body>
</html>

Просмотреть файл

@ -0,0 +1,197 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{D6F8976C-1DC3-4106-B11E-5104B91DD9D5}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Microsoft.Legal.MatterCenter.Jasmine</RootNamespace>
<AssemblyName>Microsoft.Legal.MatterCenter.Jasmine</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<UseIISExpress>true</UseIISExpress>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<UseGlobalApplicationHostFile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Content Include="js\angulartics-azure.js" />
<Content Include="js\site.js" />
<Content Include="js\site.min.js" />
<Content Include="Object\ObjectCollection.js" />
<Content Include="packages.config" />
<Content Include="Scripts\app.js" />
<Content Include="Open Notebook.onetoc2" />
<Content Include="bower.json" />
<Content Include=".bowerrc" />
<None Include=".bin\bower.cmd" />
<None Include=".bin\git.cmd" />
<None Include=".bin\node.cmd" />
<Content Include="js\Open Notebook.onetoc2" />
<None Include="Web.Debug.config">
<DependentUpon>Web.config</DependentUpon>
</None>
<None Include="Web.Release.config">
<DependentUpon>Web.config</DependentUpon>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\app.js">
<Link>app\app.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\dashboard\documentdashboard.controller.js">
<Link>app\dashboard\documentdashboard.controller.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\dashboard\documentdashboard.resources.js">
<Link>app\dashboard\documentdashboard.resources.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\dashboard\matterdashboard.controller.js">
<Link>app\dashboard\matterdashboard.controller.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\dashboard\matterdashboard.resources.js">
<Link>app\dashboard\matterdashboard.resources.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\directives\common.directive.js">
<Link>app\directives\common.directive.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\directives\drag.directive.js">
<Link>app\directives\drag.directive.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\directives\drop.directive.js">
<Link>app\directives\drop.directive.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\directives\heading.directive.js">
<Link>app\directives\heading.directive.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\document\document.resources.js">
<Link>app\document\document.resources.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\document\documents.controller.js">
<Link>app\document\documents.controller.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\home.controller.js">
<Link>app\home.controller.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\home.resources.js">
<Link>app\home.resources.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\matter\createMatter.controller.js">
<Link>app\matter\createMatter.controller.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\matter\matter.resources.js">
<Link>app\matter\matter.resources.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\matter\matters.controller.js">
<Link>app\matter\matters.controller.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\matter\Upload.js">
<Link>app\matter\Upload.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\navigation.controller.js">
<Link>app\navigation.controller.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\services\api.service.js">
<Link>app\services\api.service.js</Link>
</Content>
<Content Include="..\Microsoft.Legal.MatterCenter.Web\wwwroot\app\services\auth.service.js">
<Link>app\services\auth.service.js</Link>
</Content>
<Content Include="JasmineTest.html" />
<Content Include="Scripts\site.js" />
<Content Include="Scripts\site.min.js" />
<Content Include="Scripts\TestConfig.js" />
<Content Include="Scripts\uiconfig.js" />
<Content Include="Specs\CreateMatterController.spec.js" />
<Content Include="Specs\CreateMatterControllerservicecall.spec.js" />
<Content Include="Specs\DocumentController.spec.js" />
<Content Include="Specs\DocumentControllerservicecall.spec.js" />
<Content Include="Specs\DocumentDashboardController.spec.js" />
<Content Include="Specs\DocumentDashboardControllerServiceCall.spec.js" />
<Content Include="Specs\HomeController.spec.js" />
<Content Include="Specs\HomeControllerservicecall.spec.js" />
<Content Include="Specs\MatterController.spec.js" />
<Content Include="Specs\MatterControllerservicecall.spec.js" />
<Content Include="Specs\MatterDashboardController.spec.js" />
<Content Include="Specs\MatterDashboardControllerservicecall.spec.js" />
<Content Include="Specs\NavigationController.spec.js" />
<Content Include="Specs\UploadVerification.js" />
<Content Include="Web.config" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="lib\" />
<Folder Include="Properties\PublishProfiles\" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>43336</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:43336/</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Просмотреть файл

@ -0,0 +1,396 @@
var vm, matterResource, $filter, $window, $watch, $http, $stateParams;
var $rootScope = { logEvent: function () { }, setAuthenticatedUserContext: function () { } };
var rootScope = {};
var $model = {};
var $label = { assignedUser: "" };
var $item = {
email: "",
name: "No results found"
};
var $state = { go: function () { }, current: { "name": "" } };
var $interval = { go: function () { } };
var $animate = { enabled: function () { } };
var $q = { defer: function () { return { resolve: function () { } } } };
var $scope = { $watch: function () { }, $apply: function () { }, gridApi: { infiniteScroll: { dataLoaded: function () { } }, selection: { selectAllRows: function () { }, clearSelectedRows: function () { } } } };
var $location = {
absUrl: function () {
var url = "https://mattermaqdevsite.azurewebsites.net&test=1&attempt=2|jasminetest.html";
return url;
}
};
var adalService = {
"userInfo": {
"userName": "MAQUser@LCADMS.onmicrosoft.com",
"profile": {
"given_name": "MAQ",
"family_name": "LCADMS",
"oid": 786
},
"isAuthenticated": true
},
logOut: function () { vm.status = true; }
};
var mockapi = function () {
};
var mocknavigationResource = {
'canCreateMatter': '/api/v1/matter/cancreate'
};
var mockMatterDashBoardResource = {
'get': '/api/v1/matter/get',
'getPinnedMatters': '/api/v1/matter/getpinned',
'getMyMatters': '/api/v1/matter/getpinned',
'getTaxonomyDetails': '/api/v1/taxonomy/gettaxonomy',
'UnpinMatter': '/api/v1/matter/unpin',
'PinMatter': '/api/v1/matter/pin',
'getFolderHierarchy': '/api/v1/matter/getfolderhierarchy',
'getMatterCounts': '/api/v1/matter/getmattercounts',
'getDefaultMatterConfigurations': '/api/v1/matter/getconfigurations'
};
var mockMatterResource = {
'get': '/api/v1/matter/get',
'getPinnedMatters': '/api/v1/matter/getpinned',
'UnpinMatters': '/api/v1/matter/unpin',
'PinMatters': '/api/v1/matter/pin',
'getTaxonomyDetails': '/api/v1/taxonomy/gettaxonomy',
'checkMatterExists': '/api/v1/matter/checkmatterexists',
'getDefaultMatterConfigurations': '/api/v1/matter/getconfigurations',
'getUsers': '/api/v1/user/getusers',
'getRoles': '/api/v1/user/getroles',
'getPermissionLevels': '/api/v1/user/getpermissionlevels',
'checkSecurityGroupExists': '/api/v1/matter/checksecuritygroupexists',
'getFolderHierarchy': '/api/v1/matter/getfolderhierarchy',
'createMatter': '/api/v1/matter/create',
'assignUserPermissions': '/api/v1/matter/assignuserpermissions',
'assignContentType': '/api/v1/matter/assigncontenttype',
'createLandingPage': '/api/v1/matter/createlandingpage',
'updateMatterMetadata': '/api/v1/matter/UpdateMetadata',
'getStampedProperties': '/api/v1/matter/getstampedproperties',
'uploadEmail': '/api/v1/document/UploadMail',
'uploadAttachment': '/api/v1/document/UploadAttachments',
'uploadfiles': '/api/v1/document/UploadAttachments',
'getHelp': '/api/v1/shared/help'
};
var mockHomeResource = {
'getHelp': '/api/v1/shared/help',
'getUserProfilePicture': '/api/v1/user/getuserprofilepicture',
'canCreateMatter': '/api/v1/matter/cancreate'
};
var data = { "name": "" };
var mockDocumentDashBoardResource = {
'get': '/api/v1/document/getdocuments',
'getPinnedDocuments': '/api/v1/document/getpinneddocuments',
'getMyDocuments': '/api/v1/document/getdocuments',
'getTaxonomyDetails': '/api/v1/taxonomy/gettaxonomy',
'unPinDocument': '/api/v1/document/unpindocument',
'pinDocument': '/api/v1/document/pindocument',
'downloadattachmentsasstream': '/api/v1/email/downloadattachmentsasstream',
'downloadAttachments': '/api/v1/email/downloadattachments',
'getDocumentCounts': '/api/v1/document/getdocumentcounts'
};
var mockDocumentResource = {
'get': '/api/v1/document/getdocuments',
'getPinnedDocuments': '/api/v1/document/getpinneddocuments',
'unPinDocument': '/api/v1/document/unpindocument',
'pinDocument': '/api/v1/document/pindocument',
'getassets': '/api/v1/document/getassets'
};
var mockMatterResourceService = {
'get': '/api/v1/matter/get',
'getPinnedMatters': '/api/v1/matter/getpinned',
'UnpinMatters': '/api/v1/matter/unpin',
'PinMatters': '/api/v1/matter/pin',
'getTaxonomyDetails': '/api/v1/taxonomy/gettaxonomy',
'checkMatterExists': '/api/v1/matter/checkmatterexists',
'getDefaultMatterConfigurations': '/api/v1/matter/getconfigurations',
'getUsers': '/api/v1/user/getusers',
'getRoles': '/api/v1/user/getroles',
'getPermissionLevels': '/api/v1/user/getpermissionlevels',
'checkSecurityGroupExists': '/api/v1/matter/checksecuritygroupexists',
'getFolderHierarchy': '/api/v1/matter/getfolderhierarchy',
'createMatter': '/api/v1/matter/create',
'assignUserPermissions': '/api/v1/matter/assignuserpermissions',
'assignContentType': '/api/v1/matter/assigncontenttype',
'createLandingPage': '/api/v1/matter/createlandingpage',
'updateMatterMetadata': '/api/v1/matter/UpdateMetadata',
'getStampedProperties': '/api/v1/matter/getstampedproperties',
'uploadEmail': '/api/v1/document/UploadMail',
'uploadAttachment': '/api/v1/document/UploadAttachments',
'uploadfiles': '/api/v1/document/UploadAttachments',
'getHelp': '/api/v1/shared/help'
};
var selectedPracticeGroup = {
"termName": "Advertising, Marketing Promotions",
"parentTermName": "Practice Groups",
"folderNames": "Email;Lorem;Ipsum",
"areaTerms": [
{
"termName": "Advertising, Marketing Promotions",
"parentTermName": "Advertising, Marketing Promotions",
"folderNames": "Email;Lorem;Ipsum",
"subareaTerms": [
{
"termName": "Advertising, Marketing Promotions",
"parentTermName": "Advertising, Marketing Promotions",
"folderNames": "Email;Lorem;Ipsum",
"isNoFolderStructurePresent": "false",
"documentTemplates": "Advertising, Marketing Promotions",
"documentTemplateNames": "Agribusiness;Aircraft;California Public Utilities Commission (CPUC);Class Action Defense",
"id": "683ec070-7ed0-4e82-b07c-13a1b4485b7b",
"wssId": 0,
"subareaTerms": null,
"$$hashKey": "object:153"
}
],
"id": "16827aa4-a8b3-4275-920b-184a04bc60ea",
"wssId": 0,
"$$hashKey": "object:149"
}
],
"id": "a42ab615-0d27-4de2-9f55-144e71219770",
"wssId": 0,
"$$hashKey": "object:122"
}
var documentTemplateTypeLawTerm = {
"areaoflaw": "Family Business",
"areaoflawId": "584a173b-7686-427d-aadb-62b13a2fd624",
"documentTemplateNames": "Copyright;Copyright Litigation",
"documentTemplates": "Family Business",
"folderNames": "Email;Lorem;Ipsum",
"foldernamesaol": "Email;Lorem;Ipsum",
"foldernamespg": "Email;Lorem;Ipsum",
"id": "578cfafb-59eb-4f4c-b219-47886c61e384",
"isNoFolderStructurePresent": "false",
"parentTermName": "Family Business",
"practicegroup": "Business Transactions",
"practicegroupId": "b36c5722-b6ee-4253-902b-743d63fa80ce",
"primaryMatterType": "true",
"subareaTerms": "null",
"termName": "Family Business",
"wssId": "0"
}
var subareaTerms =
[{
"termName": "Advertising, Marketing Promotions",
"parentTermName": "Advertising, Marketing Promotions",
"folderNames": "Email;Lorem;Ipsum",
"isNoFolderStructurePresent": "false",
"documentTemplates": "Advertising, Marketing Promotions",
"documentTemplateNames": "Agribusiness;Aircraft;California Public Utilities Commission (CPUC);Class Action Defense",
"id": "578cfafb-59eb-4f4c-b219-47886c61e384",
"primaryMatterType": "true",
"wssId": 0,
"subareaTerms": null,
"$$hashKey": "object:153"
}]
var item = {
"email": "MAQUser@LCADMS.onmicrosoft.com",
"entityType": "User",
"largePictureUrl": null,
"logOnName": "i:0#.f|membership|maquser@lcadms.onmicrosoft.com",
"name": "MAQ User",
}
var obj = [{
"documentName": "SharePoint Online is out of storage space.eml",
"documentVersion": "2.0",
"documentClient": "SubsiteClient",
"documentClientId": "98052",
"documentClientUrl": "https://lcadms.sharepoint.com/sites/subsiteclient",
"documentMatter": "Default Matter",
"documentMatterId": "11111",
"documentOwner": "MAQ User",
"documentUrl": "https://lcadms.sharepoint.com/sites/subsiteclient/6cbca4ab447c87302d3a1f0e3c32985a/Ipsum/SharePoint Online is out of storage space.eml",
"documentOWAUrl": "https://lcadms.sharepoint.com/sites/subsiteclient/6cbca4ab447c87302d3a1f0e3c32985a/Ipsum/SharePoint Online is out of storage space.eml",
"documentExtension": "eml",
"documentCreatedDate": "5/17/2016 12:41:06 PM",
"documentModifiedDate": "5/17/2016 12:41:07 PM",
"documentCheckoutUser": "",
"documentMatterUrl": "https://lcadms.sharepoint.com/sites/subsiteclient/6cbca4ab447c87302d3a1f0e3c32985a",
"documentParentUrl": "https://lcadms.sharepoint.com/sites/subsiteclient/6cbca4ab447c87302d3a1f0e3c32985a/Ipsum",
"documentID": "425427363",
"checker": true,
"documentIconUrl": "https://lcadms.sharepoint.com/_layouts/15/images/iceml.gif",
"pinType": "Pin",
"$$hashKey": "object:286",
"selected": true
},
{
"documentName": "SharePoint Online is out of storage space.eml",
"documentVersion": "2.0",
"documentClient": "SubsiteClient",
"documentClientId": "98052",
"documentClientUrl": "https://lcadms.sharepoint.com/sites/subsiteclient",
"documentMatter": "Default Matter",
"documentMatterId": "11111",
"documentOwner": "MAQ User",
"documentUrl": "https://lcadms.sharepoint.com/sites/subsiteclient/6cbca4ab447c87302d3a1f0e3c32985a/Ipsum/SharePoint Online is out of storage space.eml",
"documentOWAUrl": "https://lcadms.sharepoint.com/sites/subsiteclient/6cbca4ab447c87302d3a1f0e3c32985a/Ipsum/SharePoint Online is out of storage space.eml",
"documentExtension": "eml",
"documentCreatedDate": "5/17/2016 12:41:06 PM",
"documentModifiedDate": "5/17/2016 12:41:07 PM",
"documentCheckoutUser": "",
"documentMatterUrl": "https://lcadms.sharepoint.com/sites/subsiteclient/6cbca4ab447c87302d3a1f0e3c32985a",
"documentParentUrl": "https://lcadms.sharepoint.com/sites/subsiteclient/6cbca4ab447c87302d3a1f0e3c32985a/Ipsum",
"documentID": "425427363",
"checker": true,
"documentIconUrl": "https://lcadms.sharepoint.com/_layouts/15/images/iceml.gif",
"pinType": "Pin",
"$$hashKey": "object:286",
"selected": true
}]
var clientobj = [{
"id": "0016765",
"name": "A. Datum Corporation",
"url": "https://lcadms.sharepoint.com/sites/ADatumCorporation",
"$$hashKey": "object:320",
"Selected": true
},
{
"id": "0016761",
"name": "AdventureWorks Cycles",
"url": "https://lcadms.sharepoint.com/sites/AdventureWorksCycles",
"$$hashKey": "object:321",
"Selected": false
},
{
"id": "0016762",
"name": "Alpine Ski House",
"url": "https://lcadms.sharepoint.com/sites/AlpineSkiHouse",
"$$hashKey": "object:322",
"Selected": false
}]
var event = {
preventDefault: function () { this.defaultPrevented = true; },
isDefaultPrevented: function () { return this.defaultPrevented === true; },
stopImmediatePropagation: function () { this.immediatePropagationStopped = true; },
isImmediatePropagationStopped: function () { return this.immediatePropagationStopped === true; },
stopPropagation: function () { },
currentTarget: { src: "" }
}
var practicegroup = [
{
"termName": "Advertising, Marketing Promotions",
"parentTermName": "Practice Groups",
"folderNames": "Email;Lorem;Ipsum",
"areaTerms": [
{
"termName": "Advertising, Marketing Promotions",
"parentTermName": "Advertising, Marketing Promotions",
"folderNames": "Email;Lorem;Ipsum",
"subareaTerms": [
{
"termName": "Advertising, Marketing Promotions",
"parentTermName": "Advertising, Marketing Promotions",
"folderNames": "Email;Lorem;Ipsum",
"isNoFolderStructurePresent": "false",
"documentTemplates": "Advertising, Marketing Promotions",
"documentTemplateNames": "Agribusiness;Aircraft;California Public Utilities Commission (CPUC);Class Action Defense",
"id": "683ec070-7ed0-4e82-b07c-13a1b4485b7b",
"wssId": 0,
"subareaTerms": null
}
],
"id": "16827aa4-a8b3-4275-920b-184a04bc60ea",
"wssId": 0,
"Selected": true
}
],
"id": "a42ab615-0d27-4de2-9f55-144e71219770",
"wssId": 0,
"$$hashKey": "object:582",
"Selected": true
},
{
"termName": "Bankruptcy Creditors Rights",
"parentTermName": "Practice Groups",
"folderNames": "Email;Lorem;Ipsum",
"areaTerms": [
{
"termName": "Bankruptcy",
"parentTermName": "Bankruptcy Creditors Rights",
"folderNames": "Email;Lorem;Ipsum",
"subareaTerms": [
{
"termName": "Personal Bankruptcy",
"parentTermName": "Bankruptcy",
"folderNames": "Email;Bankruptcy",
"isNoFolderStructurePresent": "false",
"documentTemplates": "Bankruptcy Creditors Rights",
"documentTemplateNames": "California Public Utilities Commission (CPUC);Class Action Defense",
"id": "2aa63c68-bcde-411b-bb0f-dc266de78a46",
"wssId": 0,
"subareaTerms": null
}
],
"id": "b6678495-0a16-424e-a94e-8a73d326e5bb",
"wssId": 0,
"Selected": false
}
],
"id": "1a185a92-569a-466e-8c94-e2c31083a821",
"wssId": 0,
"$$hashKey": "object:583",
"Selected": false
}]
var gridrows = {
"core": {
getVisibleRows: function (data) { return 0; }
}
}
function getData(objectData, resourceData) {
var sURL = oTestConfiguration.sSiteURL + resourceData[objectData.method];
var http = new XMLHttpRequest();
var sPostdata;
if (!IsJsonString(objectData.data)) {
sPostdata = JSON.stringify(objectData.data);
} else {
sPostdata = objectData.data;
}
http.open("POST", sURL, false);
var accessToken = "Bearer " + sessionStorage.getItem("adal.idtoken");
// Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/json");
http.setRequestHeader("Accept", "application/json");
http.setRequestHeader("Authorization", accessToken);
http.send(sPostdata);
if (http.status === 200) {// That's HTTP for 'ok'
if (objectData.success) {
objectData.success(JSON.parse(http.responseText));
}
else {
return JSON.parse(http.responseText);
}
}
}
function IsJsonString(sValue) {
try {
JSON.parse(sValue);
} catch (exception) {
return false;
}
return true;
}

Двоичный файл не отображается.

Просмотреть файл

@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Microsoft.Legal.MatterCenter.DataLayer")]
[assembly: AssemblyTitle("Microsoft.Legal.MatterCenter.Jasmine")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Microsoft.Legal.MatterCenter.DataLayer")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyCompany("Microsoft Corporation")]
[assembly: AssemblyProduct("Microsoft.Legal.MatterCenter.Jasmine")]
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("d43c4b81-a55e-4597-85e8-1df084923d86")]
[assembly: Guid("d6f8976c-1dc3-4106-b11e-5104b91dd9d5")]
// Version information for an assembly consists of the following four values:
//
@ -29,8 +29,7 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

Просмотреть файл

@ -0,0 +1,65 @@
var oTestConfiguration = {
sSiteURL: "http://matterwebapp.azurewebsites.net",
sValidMatterName: "Test Matter 112233",
sValidMatterClientURL: "https://lcadms.sharepoint.com/sites/microsoft",
sInvalidMatterName: "Microsoft Test",
sInvalidMatterURL: "https://lcadms.sharepoint.com/sites/microsoft",
sSourceIconURL: "https://lcadms.sharepoint.com/_layouts/15/images/icsourceicon.gif",
sEmailSubject: "CELA Project Center Feedback and Support request",
sLearnMoreLink: "http://www.microsoft.com/mattercenter",
sOverwriteConfigFileName: "testEmail.eml",
sSelectedClient: "A. Datum Corporation",
sSelectedPracticeGroup: "Advertising, Marketing Promotions",
sSelectedAreaOfLaw: "Advertising, Marketing Promotions",
sActiveSubAreaOfLawTerm: "Advertising, Marketing Promotions",
sFolderNames: "Email;Lorem;Ipsum",
nGUIDLength: 32,
sLocationURL: "https://matterwebapp.azurewebsites.net&test=1&attempt=2|jasminetest.html",
nDocumentCheckCount: 2,
oClientObj: { id: 16761, name: "Microsoft", url: "https://lcadms.sharepoint.com/sites/microsoft" },
oDocumentObject: {
documentCheckoutUser: "MAQ User",
documentClient: "Awesome Computers",
documentClientId: "0016763",
documentClientUrl: "https://lcadms.sharepoint.com/sites/awesomecomputers",
documentCreatedDate: "2/11/2016 10:55:43 AM",
documentExtension: "docx",
documentIconUrl: "https://lcadms.sharepoint.com/_layouts/15/images/icdocx.gif",
documentID: "17592407627949",
documentMatter: "Test GitHub build",
documentMatterId: "TGB001",
documentMatterUrl: "https://lcadms.sharepoint.com/sites/AwesomeComputers/727f57900ca2b473b99b25f9e36506d0/Forms",
documentModifiedDate: "2/8/2016 1:06:00 PM",
documentName: "Test Document.docx",
documentOWAUrl: "https://lcadms.sharepoint.com/sites/AwesomeComputers/_layouts/15/WopiFrame.aspx?sourcedoc={ADF55595-76D7-4131-8FE9-807989BA166D}&file=Test%20Document.docx&action=default&DefaultItemOpen=1",
documentOwner: "MAQ User",
documentParentUrl: "https://lcadms.sharepoint.com/sites/AwesomeComputers/727f57900ca2b473b99b25f9e36506d0/Forms/AllItems.aspx",
documentUrl: "https://lcadms.sharepoint.com/sites/AwesomeComputers/_layouts/15/WopiFrame.aspx?sourcedoc={ADF55595-76D7-4131-8FE9-807989BA166D}&file=Test%20Document.docx&action=default&DefaultItemOpen=1",
documentVersion: "2.0",
pinType: "Pin"
},
oMatterObject: {
matterName: "Default Matter",
matterDescription: "Test Matter",
matterCreatedDate: "19/08/2016",
matterUrl: "https://lcadms.sharepoint.com/sites/subsiteclient/SitePages/6cbca4ab447c87302d3a1f0e3c32985a.aspx",
matterPracticeGroup: "Business Transactions",
matterAreaOfLaw: "Family Business",
matterSubAreaOfLaw: "Family Business",
matterClientUrl: "https://lcadms.sharepoint.com/sites/subsiteclient",
matterClient: "Microsoft",
matterClientId: "578cfafb-59eb-4f4c-b219-47886c61e384",
hideUpload: true,
matterID: "1516561262162",
matterResponsibleAttorney: "CELA",
matterModifiedDate: "19/08/2016",
matterGuid: "578cfafb-59eb-4f4c-b219-47886c61e384",
pinType: 'unpin'
}
};
var oEnvironmentConfiguration = {
tenantID: "9a689192-bfc9-4d08-94b9-64b31bc60540",
clientID: "61394aba-09ba-4e25-ae32-e10805c6841b",
instanceURL: "https://login.microsoftonline.com/"
};

Просмотреть файл

@ -0,0 +1,55 @@

(function () {
// Enter Global Config Values & Instantiate ADAL AuthenticationContext
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: 'msmatter.onmicrosoft.com', //Enter tenant Name e.g. microsoft.onmicrosoft.com
clientId: 'b94f07df-c825-431f-b9c5-b9499e8e9ac1', //Enter your app Client ID created in Azure Portal
postLogoutRedirectUri: window.location.origin,
//cacheLocation: 'localStorage', // enable this for IE, as sessionStorage does not work for localhost.
};
var authContext = new AuthenticationContext(config);
// Get UI jQuery Objects
//var $panel = $(".panel-body");
var $userDisplay = $(".app-user");
var $signInButton = $(".app-login");
var $signOutButton = $(".app-logout");
var $errorMessage = $(".app-error");
var $apiBtn = $("#btnAPI");
// Check For & Handle Redirect From AAD After Login
var isCallback = authContext.isCallback(window.location.hash);
authContext.handleWindowCallback();
$errorMessage.html(authContext.getLoginError());
if (isCallback && !authContext.getLoginError()) {
window.location = authContext._getItem(authContext.CONSTANTS.STORAGE.LOGIN_REQUEST);
}
// Check Login Status, Update UI
var user = authContext.getCachedUser();
if (user) {
$userDisplay.html(user.userName);
$userDisplay.show();
$signInButton.hide();
$signOutButton.show();
} else {
$userDisplay.empty();
$userDisplay.hide();
$signInButton.show();
$signOutButton.hide();
}
// Register NavBar Click Handlers
$signOutButton.click(function () {
authContext.logOut();
});
$(document).ready(function () {
if (null == sessionStorage.getItem('adal.idtoken') || "" === sessionStorage.getItem('adal.idtoken')) {
authContext.login();
}
});
}());

Просмотреть файл

@ -0,0 +1 @@
// Write your Javascript code.

Просмотреть файл

Просмотреть файл

@ -0,0 +1,275 @@
var uiconfigs =
{
"Navigation": {
"MenuItem1LinkTitle": "Home",
"MenuItem1LinkTitle": "Search matters",
"MenuItem1LinkTitle": "Search documents",
"NameTitle": "Matter",
"HeaderBarLink1Title": "Learn more about matter center",
"HeaderBarLink2Title": "Remove this section",
"MenuImageOpenTitle": "Open App Switcher",
"MenuImageCloseTitle": "Close App Switcher",
"HeaderBarLink1Text": "LearnMore",
"HomeMenuText": "Home",
"Image1Title": "Search matters",
"Image2Title": "Search documents",
"HelpRequesURL": "https://lcadms.sharepoint.com/sites/catalog",
"FooterLabel": "Questions? Contact",
"MenuImageCaption": "menu",
"MenuImageTitle": "Matter center menu",
"MenuItem1LinkText": "Home",
"MenuItem2LinkText": "Matters",
"MenuItem3LinkText": "Documents",
"LogoImageTitle": "Matter center home",
"ContextualHelpImageTitle": "Matter center help",
"ContextualHelpLabel1": "Get to know this view",
"ContextualHelpLink1Text": "Home in Outlook and Word",
"ContextualHelpLink1URL": "https://microsoft.sharepoint.com/teams/celapcconfig/Shared%20Documents/CELA%20Project%20Center%20End%20User%20Guide_24.pdf#Home_in_Outlook_and_Word ",
"ContextualHelpLabel2": "How do I get Project Center on my device?",
"ContextualHelpLink2URL": "https://microsoft.sharepoint.com/teams/celapcconfig/Shared%20Documents/CELA%20Project%20Center%20End%20User%20Guide_24.pdf#Enabling_Project_Center",
"ContextualHelpFooterLink1Label": "Matter Center Aisling Support",
"MatterCenterSupportLink": "mailto:support@supportsite.com",
"ContextualHelpFooterLink1Title": "Write an email to support",
"ContextualHelpHeader": "Matter Center For Outlook",
"ContextualHelpFooterLabel": "Questions? Contact ",
"HeaderBarLabel": "Welcome to Matter Center! Upload, share, and save your documents here.",
"Image1Caption": "Matters",
"Image2Caption": "Documents",
"HeaderBarLink1URL": "http://www.microsoft.com/mattercenter",
"HeaderBarLink2Text": "dismiss",
"Image3Caption": "Upload attachments",
"Image4Caption": "Create a new matter",
"Image5Caption": "Go to Matter Center Home",
"FooterLink1Title": "Matter Center Support",
"FooterLink1Text": "Matter Center Support",
"FooterLink1URL": "mailto:lcaweb2@microsoft.com?subject=CELA Project Center Feedback and Support request",
"Image3Title": "Upload documents to a matter",
"Image4Title": "Create a new matter site",
"Image5Title": "Go to the web home page"
},
"MatterDashboard": {
"GridColumn1Header": "test1",
"GridColumn2Header": "test2",
"GridColumn3Header": "test3",
"GridColumn4Header": "test4",
"GridColumn5Header": "test5",
"AdvSearchLabel1InternalFuncParamText": "client",
"AdvSearchLabel2InternalFuncParamText": "pg",
"AdvSearchLabel3InternalFuncParamText": "aol"
},
"CreateMatter": {
"Tab1HeaderTitle": "Step 1: Select a client and provide basic information for your new matter.",
"Tab2HeaderTitle": "Step 2: Confirm that a conflict check was conducted and specify who should be conflicted from or given access to this matter.",
"Tab3HeaderTitle": "Step 3: When you've entered all relevant information for your new matter, create the matter and notify your team.",
"ButtonNextText": "Next",
"ButtonPreviousText": "Previous",
"ButtonCreateText": "Create",
"Tab2NoSearchResultText": "No Results Found",
"Tab1Type1Header1Label1": "Select a Practice Group",
"Tab1Type1Footer1Label1": "Please select primary matter type before you save.",
"Tab1SiteColumn1Caption": "Area of Law",
"Tab1SiteColumn2Caption": "Sub Area of Law (select matter type)",
"Tab1SiteColumn3Caption": "Matter Type",
"Tab1Type1Label1": "select primary matter type",
"Tab1ButtonAddTitle": "Add",
"Tab1ButtonRemoveTitle": "Remove",
"MenuImageTitle": "Matter Center menu",
"MenuImageCaption": "menu",
"Tab1ButtonCloseTitle": "Close",
"Tab1ButtonSelectType": "Select Type",
"Tab1ImageLoadingAltText": "Loading...",
"MenuItem1LinkTitle": "Home",
"MenuItem2LinkTitle": "Search matters",
"MenuItem3LinkTitle": "Search documents",
"MenuItem1LinkText": "Home",
"MenuItem2LinkText": "Matters",
"MenuItem3LinkText": "Documents",
"ButtonSaveText": "Save",
"MenuImageOpenTitle": "Open App Switcher",
"MenuImageCloseTitle": "Close App Switcher",
"ButtonDeleteText": "Delete",
"Tab1LeftButtonAltText": "Left",
"Tab1RighttButtonAltText": "Right",
"Tab3SectionText": "You have entered all of the necessary information to create this matter. After you click Create and Notify, the matter will be created and all team members will receive an email containing a link to this matter's location. ",
"Tab1Dropdown1Label": "Client Name",
"Tab1Header": "Open Matter",
"Tab2Header": "Assign Permission",
"Tab3Header": "Create and Notify",
"Tab2Checkbox1Lebal": "Conflict check conducted (must be complete prior to provisioning matter)",
"Tab2Textbox1Label": "Who conducted the conflict check?",
"Tab2DateLabel": "Date Conducted",
"Tab2RadioButton1Label": "Conflict Identified?",
"Tab2RadioButton1Option1": "Yes",
"Tab2RadioButton1Option2": "No",
"Tab2Textbox2Label": "Conflicted Users",
"Tab1Textbox1Label": "Client ID",
"Tab2Textbox2PlaceHolder": "Enter and select names",
"Tab2RadioButton2Label": "Would you like this matter to be secured only to the assigned team?",
"Tab2RadioButton2Option1": "Yes",
"Tab2RadioButton2Option2": "No",
"Tab2TeamHeader": "Assign Team",
"Tab2Textbox3Label": "Name",
"Tab2Textbox3PlaceHolder": "Enter and select names",
"Tab2Deopdown1Label": "Role",
"Tab2Deopdown2Label": "Permission Level",
"Tab2AddMoreHeaderLabel": "Add More Names",
"Tab1Textbox2Label": "Matter Name",
"Tab3CheckBox1Text": "Include calendar",
"Tab3CheckBox2Text": "Include RSS Feeds",
"Tab3CheckBox3Text": "Include email notification",
"Tab3CheckBox4Text": "Include Tasks",
"Tab3ButtonText": "Create and Notify",
"Tab1Textbox2PlaceholderText": "Enter a name for this matter",
"Tab1Textbox3Label": "Matter ID",
"Tab1Textbox3PlaceholderText": "Enter a matter ID",
"Tab1Textbox4Label": "Matter Description",
"Tab1Textbox4PlaceholderText": "Enter a brief description of the matter",
"Tab1Textbox5Label": "Matter Type (click Select to define the practice group and area of law)"
},
"Header": {
"MenuImage1Title": "Matter center menu",
"MenuImage1Caption": "menu",
"MenuImage1OpenTitle": "Open App Switcher",
"MenuImage1CloseTitle": "Close App Switcher",
"Menu1Option1Title": "Home",
"Menu1Option2Title": "Search matters",
"Menu1Option3Title": "Search documents",
"Menu1Option1Text": "Home",
"Menu1Option2Text": "Matters",
"Menu1Option3Text": "Documents",
"ContextualHelpImageTitle": "Matter center help",
"ContextualHelpHeader": "Matter Center For Outlook",
"ContextualHelpNoLinkText": "There are no help links available.",
"ContextualHelpFooterLink1Label": "Matter Center Aisling Support",
"LogoImageTitle": "Matter center home",
"ContextualHelpLabel1": "Get to know this view",
"ContextualHelpLabel2": "How do I get Project Center on my device?",
"MatterCenterSupportLink": "mailto:support@supportsite.com",
"ContextualHelpFooterLink1Title": "Write an email to support",
"ContextualHelpFooterLabel": "Questions? Contact ",
"ContextualHelpAltText": "Contextual Help",
"ContextualHelpFlyoutAltText": "Close flyout",
"CloseTitle": "Close"
},
"Documents": {
"EllipsisLink4Text": "Unpin this Document",
"StartDatePlaceHolder": "Start mm/dd/yyyy",
"EndDatePlaceHolder": "End mm/dd/yyyy",
"ImageWarningTitle": "Warning",
"ImageWarningAltText": "Warning icon",
"AttachmentSuccessfullyMsgText": "Documents successfully attached.",
"AttachmentProgressingText": "Attaching",
"AttachmentProgressingWarningText": "Do not close Matter Center until all documents are attached.",
"AttachmentLoadingText": "Loading...",
"ButtonOkText": "Ok",
"ImageClearTitle": "Clear",
"LabelCloseText": "Close",
"ClearFilterFromLabelText": "Clear filters from ",
"NoFilterMatchMsgTitle": "There are no items that match this filter",
"NoFilterMatchMsgText": "There are no items that match this filter",
"LabelDocumentText": "documents...",
"LabelOfText": "of",
"ImageClearAltText": "Clear filters",
"FilterSearchPlaceholderText": "Search",
"EllipsisDocTypeIconAltText": "Document type icon",
"GridColumn8Header": "Created Date",
"Dropdown1Item1": "All Documents",
"Dropdown1Item2": "My Documents",
"Dropdown1Item3": "Pinned Documents",
"SearchPlaceholderText": "Search by ID, or document or client name",
"NoDataSearchText": "Nothing matches your search term or the filter you selected. Please try again.<br>If you applied a filter, remove it to get back to your list.<br>Search suggestions:<br><ul><li>Make sure all words are spelled correctly</li><li>Try different keywords</li><li>Try searching by the matter name or client name</li><li>Try more general search terms</li></ul>",
"GridColumn1Header": "Document",
"GridColumn2Header": "Client",
"GridColumn3Header": "Client.MatterID",
"GridColumn4Header": "Modified Date",
"GridColumn5Header": "Author",
"GridColumn6Header": "Document Version",
"GridColumn7Header": "Checked out to",
"HeaderText": "All Documents",
"EllipsisLink1Text": "Open this Document",
"EllipsisLink2Text": "View Matter Details",
"EllipsisLink3Text": "Pin this Document",
"FlyoutButton1Text": "Open document",
"FlyoutButton2Text": "View document details"
},
"Matters": {
"EllipsisLink5Text": "Unpin this matter",
"AttachmentEditImageTitle": "Edit attachment name",
"AttachmentEditImageAltText": "Edit",
"AttachmentSaveImageTitle": "Save attachment name",
"AttachmentSaveImageText": "Save",
"AttachmentUploadSuccessfullyImageAltText": "Uploaded successfully",
"AttachmentIconImageAltText": "attachment icon",
"AttachmentTestTitle": "Test attachments",
"AttachmentEmptyText": "No files uploaded",
"AttachmentBreadcrumAltText": "Root",
"AttachmentFolderAltText": "Documents",
"FilterSearchPlaceholderText": "Search",
"ClearFilterText": "Clear filters from ",
"NoFilterMatchMsgTitle": "There are no items that match this filter",
"NoFilterMatchMsgText": "There are no items that match this filter",
"ImageCloseText": "Close",
"ImageClearTitle": "Clear",
"ImageClearAltText": "Clear filters",
"ClearFilterFromLabelText": "Clear filters from ",
"ImageWarningAltText": "Warning Message",
"Button1DuplicateContentTitle": "Matter Center will compare all content and data associated with the two documents. Navigating away from this screen will cancel the content check.",
"Button1DuplicateContentText": "Perform content check",
"Button2SaveLatestVersionTitle": "The file will be saved as the latest version of the existing document that has same title. Matter Center will retain all prior versions of the document.",
"Button2SaveLatestVersionText": "Save as latest version",
"Button3AppendDateTitle": "The file will be saved as new, separate document with the current date and time added to the end of the file name.",
"Button3AppendDateText": "Append date to file name and save",
"Button4CancelUploadTitle": "This document will not be uploaded and you will return to the previous screen.",
"Button4CancelUploadText": "Cancel upload",
"Button5OkTitle": "This document will not be uploaded and you will return to the previous screen.",
"Button5OkText": "Ok",
"Image1ContentCheckText": "Checking content ",
"Button6CancelText": "Cancel",
"UploadCompleteLabel1Text": "Upload complete.",
"CloseIconText": "x",
"StartDatePlaceHolder": "Start mm/dd/yyyy",
"EndDatePlaceHolder": "End mm/dd/yyyy",
"GridColumn8Header": "Area of Law",
"AttachmentLoadingText": "Loading...",
"GridColumn5Header": "Responsible Attorney",
"GridColumn6Header": "Sub Area of Law",
"GridColumn7Header": "Open Date",
"Dropdown1Item1": "All Matters",
"Dropdown1Item2": "My Matters",
"Dropdown1Item3": "Pinned Matters",
"SearchPlaceholderText": "Search by ID, or matter or client name",
"NoDataSearchText": "Nothing matches your search term or the filter you selected. Please try again.<br>If you applied a filter, remove it to get back to your list.<br>Search suggestions:<br><ul><li>Make sure all words are spelled correctly</li><li>Try different keywords</li><li>Try searching by the matter name or client name</li><li>Try more general search terms</li></ul>",
"GridColumn1Header": "Matter",
"GridColumn2Header": "Client",
"GridColumn3Header": "Client.MatterID",
"GridColumn4Header": "Modified Date",
"HeaderText": "All Matters",
"EllipsisLink1Text": "Upload to this Matter",
"EllipsisLink2Text": "View Matter Details",
"EllipsisLink3Text": "Go to Matter OneNote",
"EllipsisLink4Text": "Pin this matter",
"FlyoutButton1Text": "View matter details",
"FlyoutButton2Text": "Upload to a matter",
"AttachmentPopupHeaderText": "Drag and drop items to folders on the right",
"AttachmentPopupFooterImageCapetion": "You can also drag and drop files from your desktop.",
"AttachmentPopupHeaderItem1Text": "Items",
"AttachmentPopupHeaderItem2Text": "Folders",
"AttachmentPopupHeaderText": "Upload to a matter"
},
"MatterUsers": {
"StampedPropertiesURL": "https://lcadms.sharepoint.com/sites/microsoft",
"SearchUsersURL": "https://lcadms.sharepoint.com/sites/client"
},
"DocumentDashboard": {
"GridColumn1Header": "test1",
"GridColumn2Header": "test2",
"GridColumn3Header": "test3",
"GridColumn4Header": "test4",
"GridColumn5Header": "test5",
"GridColumn6Header": "test6",
"AdvSearchLabel1InternalFuncParamText": "client",
"AdvSearchLabel2InternalFuncParamText": "pg",
"AdvSearchLabel3InternalFuncParamText": "aol"
}
};

Просмотреть файл

@ -0,0 +1,336 @@
/// <disable>JS2074, JS3058</disable>
// Test suite
describe("CreateMatter Controller test suite", function () {
"use strict";
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("matterResource", ["$resource", "auth", mockMatterResourceService]);
}));
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("api", ["matterResource", "documentResource", "documentDashBoardResource", "matterDashBoardResource", "homeResource", mockapi]);
}));
beforeEach(module("ui.router"));
beforeEach(module("ui.bootstrap"));
beforeEach(inject(function ($controller, $injector, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller("createMatterController as vm", { $scope: $scope, $rootScope: rootScope, $state: $state, $stateParams: $stateParams, matterResource: mockMatterResourceService, api: mockapi });
}));
describe("Verification of clearpopup function", function () {
it("It should set an errorPopUpBlock to false", function () {
vm.clearPopUp();
expect(vm.errorPopUpBlock).toBe(false);
});
it("It should not define errorPopUpBlock", function () {
expect(vm.errorPopUpBlock).toBeUndefined();
});
});
describe("Verification of getMatterGUID function", function () {
it("It should return the GUID for matter with length of 32 alphanumeric characters", function () {
expect(vm.matterGUID.length).toBe(oTestConfiguration.nGUIDLength);
});
it("It should not return null value", function () {
expect(vm.matterGUID).not.toBe(null);
});
it("It should return the GUID for matter with defined value", function () {
expect(vm.matterGUID).toBeDefined();
});
});
describe("Verification of selectMatterTypePopUpClose function", function () {
it("It should hide popupContainerBackground and popupContainer", function () {
vm.popupContainer = "Show";
vm.selectMatterTypePopUpClose();
expect(vm.popupContainerBackground).toBe("hide");
expect(vm.popupContainer).toBe("hide");
});
it("It should show popupContainerBackground and should hide popupContainer", function () {
vm.popupContainer = "hide";
vm.selectMatterTypePopUpClose();
expect(vm.popupContainerBackground).toBe("Show");
expect(vm.popupContainer).toBe("hide");
});
});
//describe("Verification of getSelectedPracticeGroupValue function", function () {
// it("It should return the selected PracticeGroup Value for all AOL and SAOL terms)", function () {
// vm.selectedPracticeGroup = selectedPracticeGroup;
// vm.getSelectedPracticeGroupValue();
// expect(vm.areaOfLawTerms).not.toBe(null);
// expect(vm.subAreaOfLawTerms).not.toBe(null);
// expect(vm.activeSubAOLTerm.termName).toBe(oTestConfiguration.sActiveSubAreaOfLawTerm);
// expect(vm.activeAOLTerm.folderNames).toBe(oTestConfiguration.sFolderNames);
// expect(vm.errorPopUp).toBe(false);
// });
// it("It should return the null value for selected PracticeGroup for AOL and SAOL terms", function () {
// vm.selectedPracticeGroup = null;
// vm.getSelectedPracticeGroupValue();
// expect(vm.areaOfLawTerms).toBe(null);
// expect(vm.subAreaOfLawTerms).toBe(null);
// });
//});
//describe("Verification of selectAreaOfLawTerm function", function () {
// it("It should return the sub area of law term on selection of area of law term", function () {
// vm.selectAreaOfLawTerm(selectedPracticeGroup.areaTerms[0]);
// expect(vm.subAreaOfLawTerms).not.toBe(null);
// expect(vm.activeSubAOLTerm.termName).toBe(oTestConfiguration.sActiveSubAreaOfLawTerm);
// expect(vm.errorPopUp).toBe(false);
// expect(vm.activeAOLTerm).toBe(selectedPracticeGroup.areaTerms[0]);
// });
// it("It should defined sub area of law term on selection of area of law term", function () {
// vm.selectAreaOfLawTerm(selectedPracticeGroup.areaTerms[0]);
// expect(vm.subAreaOfLawTerms).not.toBeUndefined();
// expect(vm.activeSubAOLTerm).not.toBeUndefined();
// expect(vm.errorPopUp).not.toBeUndefined();
// expect(vm.activeAOLTerm).not.toBeUndefined();
// });
//});
//describe("Verification of selectSubAreaOfLawTerm function", function () {
// it("It should return the sub area of law items", function () {
// vm.selectSubAreaOfLawTerm(selectedPracticeGroup.areaTerms[0].subareaTerms[0]);
// expect(vm.activeSubAOLTerm).toBe(selectedPracticeGroup.areaTerms[0].subareaTerms[0]);
// expect(vm.errorPopUp).toBe(false);
// });
// it("It should not return undefined value for sub area of law items", function () {
// vm.selectSubAreaOfLawTerm(selectedPracticeGroup.areaTerms[0].subareaTerms[0]);
// expect(vm.activeSubAOLTerm).not.toBeUndefined();
// expect(vm.errorPopUp).not.toBeUndefined();
// });
//});
describe("Verification of selectDocumentTemplateTypeLawTerm function", function () {
it("It should not return null value for the document template type term", function () {
vm.selectDocumentTemplateTypeLawTerm(documentTemplateTypeLawTerm);
expect(vm.removeDTItem).toBe(true);
expect(vm.errorPopUp).toBe(false);
expect(vm.activeDocumentTypeLawTerm).toBe(documentTemplateTypeLawTerm);
expect(vm.primaryMatterType).toBe(true);
});
it("It should return correct value for document template type term", function () {
vm.selectDocumentTemplateTypeLawTerm(documentTemplateTypeLawTerm);
expect(vm.removeDTItem).not.toBe(false);
expect(vm.errorPopUp).not.toBe(true);
expect(vm.activeDocumentTypeLawTerm).not.toBe(null);
expect(vm.primaryMatterType).not.toBe(false);
});
});
describe("Verification of addToDocumentTemplate function", function () {
it("It should return the document template type law terms", function () {
vm.activeSubAOLTerm = documentTemplateTypeLawTerm;
vm.documentTypeLawTerms = subareaTerms;
vm.addToDocumentTemplate();
expect(vm.documentTypeLawTerms).not.toBeUndefined();
});
it("It should not return null value for activeDocumentTypeLawTerm", function () {
vm.activeSubAOLTerm = documentTemplateTypeLawTerm;
vm.documentTypeLawTerms = subareaTerms;
vm.addToDocumentTemplate();
expect(vm.activeDocumentTypeLawTerm).not.toBe("null");
});
});
describe("Verification of removeFromDocumentTemplate function", function () {
it("It should not return document template type law terms while removing", function () {
vm.removeDTItem = false;
vm.removeFromDocumentTemplate();
expect(vm.removeDTItem).not.toBe(true);
expect(vm.primaryMatterType).not.toBe(true);
});
it("It should return the document template type law terms while removing", function () {
vm.removeDTItem = true;
vm.removeFromDocumentTemplate();
expect(vm.removeDTItem).toBe(false);
expect(vm.primaryMatterType).toBe(false);
});
});
describe("Verification of onSelect function", function () {
it("It should return the conflicted user", function () {
vm.onSelect(item, $model, $label, "conflictcheckuser", "on-blurr", event, item.name);
expect(vm.oSiteUsers).toBeDefined();
expect(vm.selectedConflictCheckUser).toBe("MAQ User(MAQUser@LCADMS.onmicrosoft.com)");
});
it("It should return the blocked user", function () {
vm.onSelect(item, $model, $label, "blockuser", "on-blurr", event, item.name);
expect(vm.oSiteUsers).toBeDefined();
expect(vm.blockedUserName).toBe("MAQ User(MAQUser@LCADMS.onmicrosoft.com)");
});
it("It should return the team member", function () {
vm.onSelect(item, $model, $label, "team", "on-blurr", event, item.name);
expect(vm.oSiteUsers).toBeDefined();
expect(vm.typehead).toBe(false);
expect(vm.notificationPopUpBlock).toBe(false);
expect($label.assignedUser).toBe("MAQ User(MAQUser@LCADMS.onmicrosoft.com)");
});
it("It should return the assigned user", function () {
vm.onSelect($item, $model, $label, "team", "on-blurr", event, item.name);
expect(vm.user).toBe("MAQ User");
});
});
describe("Verification of saveDocumentTemplates function", function () {
it("It should return the saved document Templates", function () {
vm.primaryMatterType = true;
vm.activeDocumentTypeLawTerm = documentTemplateTypeLawTerm;
vm.documentTypeLawTerms = subareaTerms;
vm.saveDocumentTemplates();
expect(vm.selectedDocumentTypeLawTerms).toBe(vm.documentTypeLawTerms);
expect(vm.popupContainerBackground).toBe("hide");
expect(vm.popupContainer).toBe("hide");
});
it("It should not return saved document Templates and should prompt error popup", function () {
vm.primaryMatterType = false;
vm.saveDocumentTemplates();
expect(vm.errorPopUp).toBe(true);
});
});
describe("Verification of open1 function", function () {
it("It should open the date picker", function () {
vm.open1();
expect(vm.opened).toBe(true);
});
});
describe("Verification of conflictRadioChange function", function () {
it("It should enable the secureMatterRadioEnabled option", function () {
vm.conflictRadioChange(true);
expect(vm.secureMatterRadioEnabled).toBe(true);
expect(vm.secureMatterCheck).toBe(true);
});
it("It should disable the secureMatterRadioEnabled option", function () {
vm.conflictRadioChange(false);
expect(vm.secureMatterRadioEnabled).toBe(false);
});
});
describe("Verification of addNewAssignPermissions function", function () {
it("It should return the data for assignPermissionTeams", function () {
vm.addNewAssignPermissions();
expect(vm.assignPermissionTeams).not.toBeUndefined();
});
});
describe("Verification of removeAssignPermissionsRow function", function () {
it("It should return the remaining users", function () {
vm.assignPermissionTeams.length = Math.floor(Math.random() * 5) + 2;
var rows = vm.assignPermissionTeams.length;
vm.removeAssignPermissionsRow(0);
expect(rows).toBe(vm.assignPermissionTeams.length + 1);
});
it("It should not return any data", function () {
vm.assignPermissionTeams.length = 0;
vm.removeAssignPermissionsRow(0);
expect(vm.assignPermissionTeams.length).toBe(0);
});
});
describe("Verification of createAndNotify function", function () {
it("It should display the Create and Notify button", function () {
vm.createAndNotify(true);
expect(vm.createButton).toBe("Create and Notify");
});
it("It should display the Create button", function () {
vm.createAndNotify(false);
expect(vm.createButton).toBe("Create");
});
});
describe("Verification of CheckPopUp function", function () {
it("It should display the Check PopUp", function () {
vm.CheckPopUp(true);
expect(vm.errorPopUpBlock).toBe(false);
expect(vm.errorBorder).toBe("");
});
});
describe("Verification of closesuccessbanner function", function () {
it("It should close the successbanner", function () {
vm.closesuccessbanner();
expect(vm.successMsg).toBe("");
expect(vm.successBanner).toBe(false);
});
});
describe('Verification of createMatterButton function', function () {
it('Successfully create matter button', function () {
vm.validateCurrentPage = function (id) { return true; };
var validateCurrentPage = function (id) { return true; };
vm.chkConfilctCheck = true;
vm.conflictDate = "8/1/2016";
vm.createMatterButton(event);
expect(vm.sectionName).toBe("snConflictCheck");
expect(vm.iCurrentPage).toBe(2);
});
});
describe('Verification of navigateToSecondSection function', function () {
it('it should navigateToSecondSection', function () {
vm.iCurrentPage = 5;
vm.navigateToSecondSection("snOpenMatter");
expect(vm.sectionName).toBe("snOpenMatter");
expect(vm.iCurrentPage).toBe(1);
expect(localStorage.getItem('iLivePage')).toBe("1");
expect(vm.prevButtonDisabled).toBe(true);
expect(vm.nextButtonDisabled).toBe(false);
});
});
//describe('Verification of NextClick function', function () {
// it('it should NextClick', function () {
// vm.iCurrentPage = 1;
// vm.NextClick(event)
// expect(vm.NextClick(event)).not.toThrow(Error);
// });
// it('it should perform NextClick', function () {
// vm.iCurrentPage = 2;
// vm.NextClick(event)
// expect(vm.NextClick(event)).not.toThrow(Error);
// });
//});
describe('Verification of PreviousClick function', function () {
it('it should PreviousClick', function () {
vm.iCurrentPage = 2;
vm.PreviousClick(event)
expect(vm.iCurrentPage).toBe(1);
expect(localStorage.getItem('iLivePage')).toBe("1");
expect(vm.prevButtonDisabled).toBe(true);
expect(vm.nextButtonDisabled).toBe(false);
});
//it('it should perform PreviousClick', function () {
// vm.iCurrentPage = 3;
// vm.PreviousClick(event)
// expect(vm.NextClick(event)).not.toThrow(Error);
//});
});
});

Просмотреть файл

@ -0,0 +1,83 @@
/// <disable>JS2074, JS3058</disable>
// Test suite
describe("CreateMatter Controller test suite", function () {
"use strict";
var mockapi = function (matterResource, callback) {
getData(matterResource, mockMatterResourceService);
};
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("matterResource", ["$resource", "auth", mockMatterResourceService]);
}));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("api", ["matterResource", "documentResource", "documentDashBoardResource", "matterDashBoardResource", "homeResource", mockapi]);
}));
beforeEach(module("ui.router"));
beforeEach(module("ui.bootstrap"));
beforeEach(inject(function ($controller, $injector, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller("createMatterController as vm", { $scope: $scope, $rootScope: rootScope, $state: $state, $stateParams: $stateParams, matterResource: mockMatterResourceService, api: mockapi });
}));
describe("Verification of Check valid matter function", function () {
it("Should return true for new matter", function () {
vm.matterName = oTestConfiguration.sValidMatterName;
vm.clientUrl = oTestConfiguration.sValidMatterClientURL;
vm.checkValidMatterName();
expect(vm.checkValidMatterName).toBe(true);
});
it("It should return false for new matter", function () {
vm.matterName = oTestConfiguration.sInvalidMatterName;
vm.clientUrl = oTestConfiguration.sInvalidMatterURL;
vm.checkValidMatterName();
expect(vm.checkValidMatterName).toBe(false);
});
});
describe("Verification of selectMatterType function", function () {
it("Successfully get Practice Group, Area of law and SubArea of law", function () {
vm.selectMatterType();
//expect(vm.selectedPracticeGroup).toBe(vm.pracitceGroupList[0]);
//expect(vm.areaOfLawTerms).toBe(vm.pracitceGroupList[0].areaTerms);
//expect(vm.subAreaOfLawTerms).toBe(vm.pracitceGroupList[0].areaTerms[0].subareaTerms);
//expect(vm.activeAOLTerm).toBe(vm.pracitceGroupList[0].areaTerms[0]);
//expect(vm.activeSubAOLTerm).toBe(vm.pracitceGroupList[0].areaTerms[0].subareaTerms[0]);
expect(vm.popupContainerBackground).toBe("Show");
expect(vm.popupContainer).toBe("Show");
});
});
describe("Verification of getSelectedClientValue function", function () {
it("Successfully get data from matter configuration list", function () {
vm.getSelectedClientValue(oTestConfiguration.oClientObj);
expect(vm.secureMatterCheck).toBe(true);
expect(vm.includeCalendar).toBe(true);
expect(vm.includeEmail).toBe(true);
expect(vm.includeRssFeeds).toBe(true);
expect(vm.defaultConfilctCheck).toBe(true);
expect(vm.isMatterDescriptionMandatory).toBe(true);
expect(vm.includeTasks).toBe(true);
});
});
////describe("Verification of createMatterButton function", function () {
//// it("Successfully create matter button", function () {
//// vm.chkConfilctCheck = true;
//// vm.conflictDate = "8/1/2016";
//// vm.createMatterButton(event);
//// expect(localStorage.getItem("IsRestrictedAccessSelected")).toBe("true");
//// expect(localStorage.getItem("IsCalendarSelected")).toBe("true");
//// expect(localStorage.getItem("IsRSSSelected")).toBe("true");
//// expect(localStorage.getItem("IsEmailOptionSelected")).toBe("true");
//// expect(localStorage.getItem("IsConflictCheck")).toBe("true");
//// expect(localStorage.getItem("IsMatterDescriptionMandatory")).toBe("false");
//// expect(localStorage.getItem("IsTaskSelected")).toBe("true");
//// });
////});
});

Просмотреть файл

@ -0,0 +1,128 @@
/// <disable>JS2074, JS3058</disable>
// Test suite
describe("documents Controller test suite", function () {
"use strict";
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("documentResource", ["$resource", "auth", mockDocumentResource]);
}));
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("api", ["matterResource", "documentResource", "documentDashBoardResource", "matterDashBoardResource", "homeResource", mockapi]);
}));
beforeEach(module("ui.router"));
beforeEach(module("ui.bootstrap"));
beforeEach(inject(function ($controller, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller("documentsController as vm", { $scope: $scope, $state: $state, $stateParams: $stateParams, documentResource: mockDocumentResource, api: mockapi, $rootScope: rootScope, $http: $http, $location: $location, $q: $q, $animate: $animate });
}));
describe("Verification of showdocdrop function", function () {
it("It should display document drop inner menu", function () {
vm.docdropinner = true;
vm.showdocdrop(event);
expect(vm.documentsdrop).toBe(true);
expect(vm.docdropinner).toBe(false);
});
it("It should hide document drop inner menu", function () {
vm.docdropinner = false;
vm.showdocdrop(event);
expect(vm.documentsdrop).toBe(false);
expect(vm.docdropinner).toBe(true);
});
});
describe("Verification of closealldrops function", function () {
it("It should close all dropdown menu", function () {
vm.closealldrops();
expect(vm.documentsdrop).toBe(false);
expect(vm.docdropinner).toBe(true);
expect(vm.documentheader).toBe(true);
expect(vm.documentdateheader).toBe(true);
});
});
describe("Verification of getTableHeight function", function () {
it("It should set dynamic height of the grid", function () {
vm.isOutlook = true;
var oTableHeight = vm.getTableHeight();
expect(oTableHeight).toBeDefined();
expect(oTableHeight).not.toBe(null);
});
it("It should not set dynamic height of the grid", function () {
vm.isOutlook = false;
var oTableHeight = vm.getTableHeight();
expect(oTableHeight).toBeDefined();
expect(oTableHeight).not.toBe(null);
});
});
describe("Verification of isOutlookAsAttachment function", function () {
it("It should show outlook as an attachment", function () {
vm.isOutlookAsAttachment(true);
expect(vm.showAttachment).not.toBe(true);
expect(vm.showAttachment).toBeDefined();
expect(vm.enableAttachment).toBe(false);
});
});
describe("Verification of closeNotification function", function () {
it("It should close all the notifications", function () {
vm.closeNotification();
expect(vm.showPopUpHolder).toBe(false);
expect(vm.showSuccessAttachments).toBe(false);
});
});
describe("Verification of search function", function () {
it("It should perform the text search in all documents", function () {
vm.selected = "";
vm.search();
expect(vm.pagenumber).toBe(1);
expect(vm.documentname).toBe("All Documents");
expect(vm.documentid).toBe(1);
expect(vm.lazyloader).toBe(false);
expect(vm.responseNull).toBe(false);
expect(vm.divuigrid).toBe(false);
});
});
describe("Verification of disabled function", function () {
it("It should set the status", function () {
var oDate = new Date();
var bStatus = vm.disabled(oDate, "day");
expect(bStatus).toBe(true);
});
});
describe("Verification of showSortExp function", function () {
it("It should sort the data in ascending order", function () {
vm.sortexp = "test";
vm.sortby = "asc";
vm.showSortExp();
expect(angular.element()).toBeDefined();
});
});
// Test suite to execute test cases.
describe("Verification of toggleCheckerAll function", function () {
// Test case to validate function.
it("It should check all the checkboxes inside grid", function () {
vm.gridOptions.data = obj;
vm.toggleCheckerAll(true);
expect(vm.gridOptions.data[0].checker).toBe(true);
expect(vm.documentsCheckedCount).toBe(oTestConfiguration.nDocumentCheckCount);
expect(vm.selectedRows).toBe(obj);
});
it("It should uncheck all the checkboxes inside grid", function () {
vm.gridOptions.data = obj;
vm.toggleCheckerAll(false);
expect(vm.gridOptions.data[0].checker).toBe(false);
expect(vm.documentsCheckedCount).toBe(0);
expect(vm.selectedRows).not.toBe(null);
expect(vm.showErrorAttachmentInfo).toBe(false);
});
});
});

Просмотреть файл

@ -0,0 +1,156 @@
// Test suite
describe('documents Controller service call test suite', function () {
var documentapi = function (documentDashBoardResource) {
getData(documentDashBoardResource, mockDocumentResource);
};
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("documentResource", ['$resource', 'auth', mockDocumentResource]);
}));
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("api", ['matterResource', 'documentResource', 'documentDashBoardResource', 'matterDashBoardResource', 'homeResource', documentapi]);
}));
beforeEach(module('ui.router'));
beforeEach(module('ui.bootstrap'));
beforeEach(inject(function ($controller, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller('documentsController as vm', { $scope: $scope, $state: $state, $stateParams: $stateParams, documentResource: mockDocumentResource, api: documentapi, $rootScope: rootScope, $http: $http, $location: $location, $q: $q, $animate: $animate });
}));
describe('Verification of watchFunc function', function () {
it('It should get all grid data', function () {
$scope.gridApi = { infiniteScroll: { dataLoaded: function () { } } };
// $scope.gridApi.infiniteScroll.dataLoaded();
var promise = vm.watchFunc();
expect(vm.gridOptions.data.length).toBeGreaterThan(0);
expect(vm.gridOptions.data).not.toBe(null);
expect(vm.lazyloader).toBe(true);
});
});
describe('Verification of documentsearch function', function () {
it('It should search related document', function () {
var term = "FileName:Test*(* OR FileName:* OR dlcDocIdOWSText:* OR MCDocumentClientName:*)";
var property = "FileName";
vm.documentsearch(term, property, false);
expect(vm.divuigrid).toBe(true);
expect(vm.nodata).toBe(false);
expect(vm.lazyloader).toBe(true);
expect(vm.filternodata).toBe(false);
expect(vm.details.length).toBeGreaterThan(0);
expect(vm.details).not.toBe(null);
//vm.documentsearch(term, property, true);
});
});
describe('Verification of FilterModifiedDate function', function () {
it('Data should be filtered based on modified date', function () {
vm.modstartdate = new Date("08/01/2016");
vm.modenddate = new Date("08/10/2016");
vm.FilterModifiedDate("Modified Date");
expect(vm.moddatefilter).toBe(true);
});
});
describe('Verification of SetDocuments function', function () {
it('document name should be added in dropdown', function () {
$scope.gridApi = { infiniteScroll: { dataLoaded: function () { } } };
vm.SetDocuments(1, "All Documents");
expect(true).toBe(true);
expect(vm.divuigrid).toBe(true);
expect(vm.responseNull).toBe(false);
expect(vm.nodata).toBe(false);
expect(vm.gridOptions.data.length).toBeGreaterThan(0);
expect(vm.gridOptions.data).not.toBe(null);
});
});
describe('Verification of GetDocuments function', function () {
it('document name should be added in dropdown', function () {
$scope.gridApi = { infiniteScroll: { dataLoaded: function () { } } };
vm.GetDocuments(3);
expect(true).toBe(true);
expect(vm.divuigrid).toBe(true);
expect(vm.nodata).toBe(false);
expect(vm.gridOptions.data.length).toBeGreaterThan(0);
expect(vm.gridOptions.data).not.toBe(null);
});
});
describe('Verification of PinMatter function', function () {
it('It should be added in pinned list', function () {
var pinObject = {
entity: oTestConfiguration.oDocumentObject
};
vm.PinMatter(pinObject);
vm.documentid = 1;
vm.documentname = "All Documents";
expect(vm.divuigrid).toBe(true);
expect(vm.responseNull).toBe(false);
expect(vm.nodata).toBe(false);
expect(vm.gridOptions.data.length).toBeGreaterThan(0);
expect(vm.gridOptions.data).not.toBe(null);
});
});
describe('Verification of UnpinDocument function', function () {
it('It should be removed from pinned list', function () {
var pinObject = {
entity: oTestConfiguration.oDocumentObject
};
vm.UnpinDocument(pinObject);
vm.documentid = 1;
vm.documentname = "All Documents";
expect(vm.divuigrid).toBe(true);
expect(vm.responseNull).toBe(false);
expect(vm.nodata).toBe(false);
expect(vm.gridOptions.data.length).toBeGreaterThan(0);
expect(vm.gridOptions.data).not.toBe(null);
});
});
describe('Verification of FilterByType function', function () {
it('document count should be greater than 0', function () {
vm.FilterByType();
expect(vm.divuigrid).toBe(true);
expect(vm.nodata).toBe(false);
expect(vm.gridOptions.data.length).toBeGreaterThan(0);
expect(vm.gridOptions.data).not.toBe(null);
});
});
describe('Verification of sortChangedDocument function', function () {
it('documents should be sort based on document name', function () {
$scope.gridApi = { infiniteScroll: { dataLoaded: function () { }, resetScroll: function () { } } };
var sortColumns = [{ "field": "documentName", "name": "documentName", "sort": "asc" }];
vm.gridOptions.columnDefs[1] = { "field": "documentName", "displayName": "Document", "width": "278", "enableHiding": false, "cellTemplate": "../app/document/DocumentTemplates/DocumentCellTemplate.html", "headerCellTemplate": "../app/document/DocumentTemplates/DocumentHeaderTemplate.html", "name": "documentName", "type": "string" };
$scope.sortChangedDocument(null, sortColumns);
expect(vm.FileNameSort).toBe("desc");
expect(vm.sortby).toBe("asc");
expect(vm.sortexp).toBe("documentName");
});
});
describe('Verification of typeheadselect function', function () {
it('selected document result should be displayed', function () {
$scope.gridApi = { infiniteScroll: { dataLoaded: function () { }, resetScroll: function () { } } };
var selected = "All Attachments - image test.eml (280620050)";
vm.typeheadselect(null, selected);
expect(selected).toContain(vm.gridOptions.data[0].documentName);
});
});
});

Просмотреть файл

@ -0,0 +1,153 @@
/// <disable>JS2074, JS3058</disable>
// Test suite
describe("DocumentDashboard Controller test suite", function () {
"use strict";
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("documentDashBoardResource", ["$resource", "auth", mockDocumentDashBoardResource]);
}));
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("api", ["matterResource", "documentResource", "documentDashBoardResource", "matterDashBoardResource", "homeResource", mockapi]);
}));
beforeEach(module("ui.router"));
beforeEach(module("ui.bootstrap"));
beforeEach(inject(function ($controller, $injector, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller("DocumentDashBoardController as vm", { $scope: $scope, $state: $state, $stateParams: $stateParams, documentDashBoardResource: mockDocumentDashBoardResource, api: mockapi, $rootScope: rootScope, $http: $http, $location: $location });
}));
//describe("Verification of closealldrops function", function () {
// it("It should close all dropdowns on click of page", function () {
// vm.x = 5;
// vm.y = 2;
// vm.sum();
// expect(vm.z).toBe(7);
// });
//});
describe("Verification of closealldrops function", function () {
it("It should close all dropdowns on click of page", function () {
vm.closealldrops(event);
expect(vm.searchdrop).toBe(false);
expect(vm.downwarddrop).toBe(true);
expect(vm.upwarddrop).toBe(false);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.sortbydrop).toBe(false);
expect(vm.sortbydropvisible).toBe(false);
});
});
describe("Verification of hideinnerdashboarddrop function", function () {
it("It should close and hide inner dropdowns of search box", function () {
vm.hideinnerdashboarddrop(event);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
});
});
describe("Verification of toggleChecker function", function () {
it("It should enable toggle to check all documents", function () {
vm.documentsCheckedCount = 2;
vm.toggleChecker(true, obj);
expect(vm.documentsCheckedCount).toBe(3);
expect(vm.cartelements).toBeDefined();
});
it("It should disable toggle to check all documents", function () {
vm.documentsCheckedCount = 2;
vm.gridApi = {};
vm.gridApi.grid = 1;
vm.gridApi = gridrows;
vm.toggleChecker(false, obj);
expect(vm.documentsCheckedCount).toBe(1);
});
});
describe("Verification of removeAttachment function", function () {
it("It should add an elements to the cart", function () {
vm.cartelements = obj;
vm.documentsCheckedCount = 3;
vm.removeAttachment(obj[0]);
expect(vm.cartelements.length).toBe(1);
expect(vm.documentsCheckedCount).toBe(2);
});
it("It should remove all the elements from the cart", function () {
vm.cartelements = {};
vm.cartelements.length = 0;
vm.removeAttachment(obj[0]);
expect(vm.cartelements.length).toBe(0);
expect(vm.documentsCheckedCount).not.toBeLessThan(0);
});
});
describe("Verification of toggleCheckerAll function", function () {
it("It should select all the document inside grid simultaneously", function () {
vm.documentGridOptions.data = obj;
vm.documentsCheckedCount = 3;
vm.toggleCheckerAll(true);
expect(vm.cartelements.length).toBeDefined();
expect(vm.documentsCheckedCount).toBe(1);
});
it("It should deselect the documents inside grid ", function () {
vm.documentGridOptions.data = obj;
vm.documentsCheckedCount = 3;
vm.toggleCheckerAll(false);
expect(vm.cartelements.length).toBe(0);
expect(vm.documentsCheckedCount).toBe(0);
});
});
describe("Verification of showupward function", function () {
it("It should display upward dropdown box", function () {
vm.showupward(event);
expect(vm.searchdrop).toBe(true);
expect(vm.downwarddrop).toBe(false);
expect(vm.upwarddrop).toBe(true);
});
});
describe("Verification of showdownward function", function () {
it("It should display downward dropdown box", function () {
vm.showdownward(event);
expect(vm.searchdrop).toBe(false);
expect(vm.upwarddrop).toBe(false);
expect(vm.downwarddrop).toBe(true);
});
});
describe("Verification of showsortby function", function () {
it("It should show sortby dropdown box", function () {
vm.sortbydropvisible = false;
vm.showsortby(event);
expect(vm.sortbydrop).toBe(true);
expect(vm.sortbydropvisible).toBe(true);
});
it("It should hide show sortby dropdown box", function () {
vm.sortbydropvisible = true;
vm.showsortby(event);
expect(vm.sortbydrop).toBe(false);
expect(vm.sortbydropvisible).toBe(false);
});
});
describe("Verification of pagination function", function () {
it("It should disable pagination on the page", function () {
vm.totalrecords = 0;
vm.pagination();
expect(vm.fromtopage).toBe("1 - 0");
expect(vm.displaypagination).toBe(false);
});
it("It should display pagination on the page", function () {
vm.totalrecords = 16;
vm.pagination();
expect(vm.fromtopage).toBe("1 - 16");
expect(vm.displaypagination).toBe(true);
});
});
});

Просмотреть файл

@ -0,0 +1,179 @@

/// <disable> JS2074,JS3058,JS2085,JS3056,JS3116,JS3054,JS2064,JS2043,JS2073,JS2038 </disable>
// Test suite
describe('DocumentDashboard Controller service call test suite', function () {
var mockDocumentapi = function (documentDashBoardResource) {
getData(documentDashBoardResource, mockDocumentDashBoardResource);
};
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("documentDashBoardResource", ["$resource", "auth", mockDocumentDashBoardResource]);
}));
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("api", ["matterResource", "documentResource", "documentDashBoardResource", "matterDashBoardResource", "homeResource", mockDocumentapi]);
}));
beforeEach(module("ui.router"));
beforeEach(module("ui.bootstrap"));
beforeEach(inject(function ($controller, $injector, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller("DocumentDashBoardController as vm", { $scope: $scope, $state: $state, $stateParams: $stateParams, documentDashBoardResource: mockDocumentDashBoardResource, api: mockDocumentapi, $rootScope: rootScope, $http: $http, $location: $location });
}));
describe("Verification of getDocumentCounts function", function () {
it("Documents count should be greater than or equal to 0", function () {
vm.getDocumentCounts();
expect(vm.allDocumentCount).not.toBeLessThan(0);
expect(vm.myDocumentCount).not.toBeLessThan(0);
expect(vm.pinDocumentCount).not.toBeLessThan(0);
expect(vm.totalrecords).not.toBeLessThan(0);
});
});
describe("Verification of getPinnedDocuments function", function () {
it("It should return the all pinned documents", function () {
vm.getPinnedDocuments();
expect(vm.documentGridOptions.data).not.toBe(null);
expect(vm.documentGridOptions.data.length).toBeGreaterThan(1);
expect(vm.totalrecords).toBe(0);
expect(vm.lazyloaderdashboard).toBe(true);
expect(vm.divuigrid).toBe(true);
});
});
describe("Verification of getMyDocuments function", function () {
it("It should return the My documents", function () {
vm.getMyDocuments();
expect(vm.lazyloaderdashboard).toBe(false);
expect(vm.displaypagination).toBe(false);
expect(vm.divuigrid).toBe(false);
expect(vm.nodata).toBe(false);
});
});
describe("Verification of getDocuments function", function () {
it("It should get the Documents", function () {
vm.getDocuments();
expect(vm.lazyloaderdashboard).toBe(true);
expect(vm.displaypagination).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.nodata).toBe(false);
expect(vm.pinDocumentCount).toBeGreaterThan(0);
expect(vm.documentGridOptions.data.length).toBeGreaterThan(1);
expect(vm.totalrecords).toBe(0);
expect(vm.pinDocumentCount).toBeGreaterThan(0);
expect(vm.nodata).toBe(false);
});
});
describe("Verification of showclientdrop function", function () {
it("It should show clientdrop", function () {
vm.clientdropvisible = false;
vm.clients = undefined;
vm.showclientdrop(event);
expect(vm.clients).toBeDefined();
expect(vm.clientdrop).toBe(true);
expect(vm.clientdropvisible).toBe(true);
expect(vm.lazyloaderdocumentclient).toBe(true);
});
it("It should not show clientdrop", function () {
vm.clientdropvisible = true;
vm.showclientdrop(event);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.lazyloaderdocumentclient).toBe(true);
});
});
describe("Verification of FilterByType function", function () {
it("It should show FilterByType", function () {
vm.FilterByType();
expect(vm.totalrecords).toBeGreaterThan(0);
expect(vm.documentGridOptions.data.length).toBeGreaterThan(0);
expect(vm.lazyloader).toBe(true);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe("Verification of sortyby function", function () {
it("It should show sortyby", function () {
var sortexp = "AlphabeticalUp";
vm.sortyby(sortexp, "Searchkeyword");
expect(vm.totalrecords).toBeGreaterThan(0);
expect(vm.documentGridOptions.data.length).toBeGreaterThan(0);
expect(vm.lazyloader).toBe(true);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe("Verification of next function", function () {
it("It should show next", function () {
vm.last = 5;
vm.totalrecords = 30;
vm.next();
expect(vm.first).toBeGreaterThan(0);
expect(vm.last).toBeGreaterThan(0);
expect(vm.total).toBeGreaterThan(0);
expect(vm.pagenumber).toBeGreaterThan(0);
expect(vm.fromtopage).toBe(vm.first + " - " + vm.totalrecords);
expect(vm.lazyloader).toBe(true);
expect(vm.documentGridOptions.data.length).toBeGreaterThan(0);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe("Verification of prev function", function () {
it("It should show prev", function () {
vm.last = 50;
vm.first = 50;
vm.prev();
expect(vm.first).toBeGreaterThan(0);
expect(vm.last).toBeGreaterThan(0);
expect(vm.pagenumber).toBe(0);
expect(vm.documentGridOptions.data.length).toBeGreaterThan(0);
expect(vm.fromtopage).toBe(vm.first + " - " + vm.last);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
//// describe('Verification of downloadEmailAsAttachment function', function () {
//// it('It should download email with attachment', function () {
//// vm.cartelements = [{ documentClientUrl: "https://lcadms.sharepoint.com/sites/skype", selected: true, documentName: "Skype Litigation.txt", documentUrl: "https://lcadms.sharepoint.com/sites/skype/9694be04f87b22e8d238d69df9e29ff2/Skype Litigation.txt" }];
//// vm.downloadEmailAsAttachment(true);
//// });
//// });
describe('Verification of pinorunpin function', function () {
it('It should be added in pinned list and removed from pinned list', function () {
var iCount = vm.pinDocumentCount;
event.currentTarget.src = "../images/pin-666.png";
vm.pinorunpin(event, oTestConfiguration.oDocumentObject);
iCount = iCount + 1;
expect(iCount).toBe(vm.pinDocumentCount);
event.currentTarget.src = "../images/unpin-666.png";
iCount = iCount - 1;
vm.documentGridOptions.data = [];
vm.documentGridOptions.data[0] = oTestConfiguration.oDocumentObject;
vm.pinorunpin(event, oTestConfiguration.oDocumentObject);
expect(iCount).toBe(vm.pinDocumentCount);
});
});
});

Просмотреть файл

@ -0,0 +1,25 @@
//Test suite
describe('Home Controller test suite', function () {
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("homeResource", ['$resource', 'auth', mockhomeResource]);
}));
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("api", ['matterResource', 'documentResource', 'documentDashBoardResource', 'matterDashBoardResource', 'homeResource', mockapi]);
}));
beforeEach(module('ui.router'));
beforeEach(module('ui.bootstrap'));
beforeEach(inject(function ($controller, $rootScope) {
rootScope = $rootScope.$new();
dm = $controller('homeController as dm', { $scope: $scope, $state: $state, $stateParams: $stateParams, homeResource: mockhomeResource, api: mockapi, $rootScope: rootScope, $location: $location, adalAuthenticationService: adalService });
}));
});

Просмотреть файл

@ -0,0 +1,54 @@
//Test suite
describe('Home Controller service call test suite', function () {
var mockapi = function (homeResource) {
getData(homeResource, mockHomeResource);
};
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("homeResource", ['$resource', 'auth', mockHomeResource]);
}));
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("api", ['matterResource', 'documentResource', 'documentDashBoardResource', 'matterDashBoardResource', 'homeResource', mockapi]);
}));
beforeEach(module('ui.router'));
beforeEach(module('ui.bootstrap'));
beforeEach(inject(function ($controller, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller('homeController as vm', { $scope: $scope, $state: $state, $stateParams: $stateParams, homeResource: mockHomeResource, api: mockapi, $rootScope: rootScope, $location: $location, adalAuthenticationService: adalService });
}));
describe('Verification of getUserProfilePicture function', function () {
it('It should get User ProfilePicture', function () {
vm.getUserProfilePicture();
expect(vm.smallPictureUrl).toBe("https://lcadms-my.sharepoint.com:443/User%20Photos/Profile%20Pictures/maquser_lcadms_onmicrosoft_com_SThumb.jpg");
expect(vm.largePictureUrl).toBe("https://lcadms-my.sharepoint.com:443/User%20Photos/Profile%20Pictures/maquser_lcadms_onmicrosoft_com_MThumb.jpg");
});
});
describe('Verification of help function', function () {
it('It should set help', function () {
vm.help();
expect(vm.helpData.length).toBeGreaterThan(0);
expect(vm.helpData).toBeDefined();
});
});
describe('Verification of signOut function', function () {
it('It should signOut', function () {
vm.signOut();
expect(vm.status).toBe(true);
});
});
});

Просмотреть файл

@ -0,0 +1,151 @@
/// <disable>JS2074, JS3058</disable>
// Test suite
describe("Matters Controller test suite", function () {
"use strict";
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("matterResource", ["$resource", "auth", mockMatterResource]);
}));
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("api", ["matterResource", "documentResource", "documentDashBoardResource", "matterDashBoardResource", "homeResource", mockapi]);
}));
beforeEach(module("ui.router"));
beforeEach(module("ui.bootstrap"));
beforeEach(inject(function ($controller, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller("mattersController as vm", { $scope: $scope, $state: $state, $stateParams: $stateParams, matterResource: mockMatterResource, api: mockapi, $rootScope: rootScope, $http: $http, $location: $location, $q: $q, $animate: $animate });
}));
describe("Verification of closeNotificationDialog function", function () {
it("It should close the notification dialog box", function () {
vm.closeNotificationDialog();
expect(vm.IsDupliacteDocument).toBe(false);
expect(vm.IsNonIdenticalContent).toBe(false);
expect(vm.showLoading).toBe(false);
});
});
describe("Verification of attachmentTokenCallbackEmailClient function", function () {
it("It should attach the token along with EmailClient-Need to call createMailPopup", function () {
var asyncResult = { status: "succeeded", value: "testtoken" };
vm.createMailPopup = function () { return 1; };
vm.attachmentTokenCallbackEmailClient(asyncResult, obj);
expect(vm.attachmentToken).toBe("testtoken");
expect(vm.mailUpLoadSuccess).toBe(false);
expect(vm.mailUploadedFolder).toBe(null);
expect(vm.loadingAttachments).toBe(false);
expect(vm.mailUploadedFile).toBe(null);
});
});
describe("Verification of getIconSource function", function () {
it("It should return the source of icon", function () {
var source = vm.getIconSource("sourceicon");
expect(source).toBe(oTestConfiguration.sSourceIconURL);
});
});
describe("Verification of closealldrops function", function () {
it("It should close all the dropdowns", function () {
vm.closealldrops();
expect(vm.mattersdrop).toBe(false);
expect(vm.mattersdropinner).toBe(true);
expect(vm.matterheader).toBe(true);
expect(vm.matterdateheader).toBe(true);
});
});
describe("Verification of checkEmptyorWhitespace function", function () {
it("It should check empty or whitespace in the input", function () {
var data = vm.checkEmptyorWhitespace("test");
expect(data).toBe("test");
});
});
describe("Verification of hideBreadCrumb function", function () {
it("It should hide the bread crumb", function () {
vm.hideBreadCrumb();
expect(rootScope.breadcrumb).toBe(true);
expect(rootScope.foldercontent).toBe(false);
});
});
describe("Verification of disabled function", function () {
it("It should set the status based on current date.", function () {
var oDate = new Date();
var status = vm.disabled(oDate, "day");
expect(status).toBe(true);
});
});
describe("Verification of showSortExp function", function () {
it("It should sort the elements in ascending order", function () {
vm.sortexp = "test";
vm.sortby = "asc";
$scope.$apply = function () { };
vm.showSortExp();
expect(angular.element()).toBeDefined();
});
});
describe("Verification of showmatterdrop function", function () {
it("It should show matter dropdown if matter is pinned", function () {
vm.mattersdropinner = true;
vm.showmatterdrop(event);
expect(vm.mattersdrop).toBe(true);
expect(vm.mattersdropinner).toBe(false);
});
it("It should hide matter dropdown if matter is not pinned", function () {
vm.mattersdropinner = false;
vm.showmatterdrop(event);
expect(vm.mattersdrop).toBe(false);
expect(vm.mattersdropinner).toBe(true);
});
});
describe("Verification of overwriteConfiguration function", function () {
it("It should return overwrite configuration for the file", function () {
var bAppendEnabled = vm.overwriteConfiguration(oTestConfiguration.sOverwriteConfigFileName);
expect(bAppendEnabled).toBe(true);
});
});
describe("Verification of contentCheckNotification function", function () {
it("It should set upload file configurations to perform content check", function () {
var file = { contentCheck: "", saveLatestVersion: "", cancel: "", append: true };
vm.contentCheckNotification(file, true);
expect(file.contentCheck).toBe("contentCheck");
expect(file.saveLatestVersion).toBe("False");
expect(file.cancel).toBe("False");
expect(file.append).toBe(false);
});
});
describe("Verification of abortContentCheck function", function () {
it("It should set upload file configuration to abort content check", function () {
vm.file = {};
vm.file.value = "This";
vm.abortContentCheck(vm.file, false);
expect(vm.file.contentCheck).toBe(null);
expect(vm.file.saveLatestVersion).toBe("True");
expect(vm.file.value).toBe("This<br/><div>Content check has been aborted.</div>");
expect(vm.file.cancel).toBe("True");
});
});
describe("Verification of closeSuccessBanner function", function () {
it("It should close the success banner", function () {
vm.closeSuccessBanner();
expect(vm.oUploadGlobal.successBanner).toBe(false);
});
});
});

Просмотреть файл

@ -0,0 +1,231 @@
//Test suite
describe('MattersController Controller test suite', function () {
var mockapi = function (matterResource) {
getData(matterResource, mockMatterResource);
};
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("matterResource", ['$resource', 'auth', mockMatterResource]);
}));
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("api", ['matterResource', 'documentResource', 'documentDashBoardResource', 'matterDashBoardResource', 'homeResource', mockapi]);
}));
beforeEach(module('ui.router'));
beforeEach(module('ui.bootstrap'));
beforeEach(inject(function ($controller, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller('mattersController as vm', { $scope: $scope, $state: $state, $stateParams: $stateParams, matterResource: mockMatterResource, api: mockapi, $rootScope: rootScope, $http: $http, $location: $location, $q: $q, $animate: $animate });
}));
//describe('Verification of SetMatters function', function () {
// it('matter name should be added in dropdown', function () {
// vm.SetMatters(1, "All Matters");
// expect(vm.divuigrid).toBe(false);
// expect(vm.responseNull).toBe(false);
// expect(vm.nodata).toBe(false);
// expect(vm.gridOptions.data.length).toBeGreaterThan(0);
// expect(vm.gridOptions.data).not.toBe(null);
// });
//});
//describe('Verification of GetMatters function', function () {
// it('matter name should be added in dropdown', function () {
// vm.GetMatters(3);
// expect(vm.divuigrid).toBe(true);
// expect(vm.nodata).toBe(false);
// expect(vm.gridOptions.data.length).toBeGreaterThan(0);
// expect(vm.gridOptions.data).not.toBe(null);
// });
//});
//describe('Verification of mattersearch function', function () {
// it('It should search related matter', function () {
// var term = "MCMatterName:Test*(MCMatterName:* OR MCMatterID:* OR MCClientName:*)";
// var property = "MCMatterName";
// vm.mattersearch(term, property, false);
// expect(vm.divuigrid).toBe(true);
// expect(vm.nodata).toBe(false);
// expect(vm.lazyloader).toBe(true);
// expect(vm.filternodata).toBe(false);
// expect(vm.details.length).toBeGreaterThan(0);
// expect(vm.details).not.toBe(null);
// });
//});
//describe('Verification of FilterModifiedDate function', function () {
// it('Data should be filtered based on modified date', function () {
// vm.modstartdate = new Date("08/01/2016");
// vm.modenddate = new Date("08/10/2016");
// vm.FilterModifiedDate("Modified Date");
// expect(vm.moddatefilter).toBe(true);
// });
//});
describe('Verification of PinMatter function', function () {
it('It should be added in pinned list', function () {
var currentRowData = {
entity: oTestConfiguration.oMatterObject
};
vm.PinMatter(currentRowData);
expect(vm.divuigrid).toBe(false);
expect(vm.responseNull).toBe(false);
expect(vm.nodata).toBe(false);
expect(vm.gridOptions.data.length).not.toBeLessThan(0);
expect(vm.gridOptions.data).not.toBe(null);
});
});
describe('Verification of UnpinMatter function', function () {
it('It should be removed from pinned list', function () {
var pinObject = {
entity: oTestConfiguration.oMatterObject
};
vm.UnpinMatter(pinObject);;
expect(vm.divuigrid).toBe(false);
expect(vm.responseNull).toBe(false);
expect(vm.nodata).toBe(false);
expect(vm.gridOptions.data.length).not.toBeLessThan(0);
expect(vm.gridOptions.data).not.toBe(null);
});
});
describe('Verification of sortChanged function', function () {
it('documents should be sort based on matter name', function () {
var sortColumns = [{ "field": "matterName", "name": "matterName", "sort": "asc" }];
vm.gridOptions.columnDefs[0] = { "field": "matterName", "displayName": "Matter", "enableHiding": false, "width": "275", "cellTemplate": "../app/matter/MatterTemplates/MatterCellTemplate.html", "headerCellTemplate": "../app/matter/MatterTemplates/MatterHeaderTemplate.html", "name": "matterName", "type": "string" };
$scope.sortChanged(null, sortColumns);
expect(vm.MatterNameSort).toBe("desc");
expect(vm.sortby).toBe("asc");
expect(vm.sortexp).toBe("matterName");
});
});
describe('Verification of typeheadselect function', function () {
it('selected document result should be displayed', function () {
var selected = "Default Matter (11111)";
vm.typeheadselect(null, selected);
expect(selected).toContain(vm.gridOptions.data[0].matterName);
});
});
describe('Verification of watchFunc function', function () {
it('It should watchFunc', function () {
vm.responseNull = false;
vm.watchFunc();
expect(vm.lazyloader).toBe(true);
expect(vm.pagenumber).toBeGreaterThan(0);
expect(vm.lazyloader).toBe(true);
expect(vm.gridOptions.data.length).toBeGreaterThan(0);
});
});
describe('Verification of getFolderHierarchy function', function () {
it('It should show getFolderHierarchy', function () {
vm.getFolderHierarchy("Default Matter", "https://lcadms.sharepoint.com/sites/subsiteclient", "6cbca4ab447c87302d3a1f0e3c32985a");
expect(vm.oUploadGlobal.bAllowContentCheck).toBe(true);
expect(vm.foldersList.length).toBeGreaterThan(0);
expect(vm.showSelectedFolderTree).not.toBe(null);
expect(vm.lazyloader).toBe(true);
});
});
describe('Verification of search function', function () {
it('It should search related matter', function () {
vm.selected = "Test Matter";
vm.search();
expect(vm.divuigrid).toBe(true);
expect(vm.nodata).toBe(false);
expect(vm.gridOptions.data.length).toBeGreaterThan(0);
expect(vm.gridOptions.data).not.toBe(null);
});
});
describe('Verification of FilterByType function', function () {
it('It should show FilterByType', function () {
vm.FilterByType();
expect(vm.gridOptions.data.length).toBeGreaterThan(0);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
});
});
describe('Verification of Openuploadmodal function', function () {
it('It should show Openuploadmodal', function () {
vm.Openuploadmodal("Default Matter", "https://lcadms.sharepoint.com/sites/subsiteclient", "6cbca4ab447c87302d3a1f0e3c32985a");
expect(vm.oUploadGlobal.successBanner).toBe(false);
expect(vm.isLoadingFromDesktopStarted).toBe(false);
});
});
describe('Verification of localOverWriteDocument function', function () {
it('It should show localOverWriteDocument', function () {
vm.ducplicateSourceFile = {
pop: function ()
{ return true; },
filter: function () {
return true;
}
}
vm.oUploadGlobal = {
"arrFiles": {
pop: function ()
{ return obj; }
}
};
vm.ducplicateSourceFile.length = 1;
var duplicateFile = { "cancel": null, "fileType": "remotefile" };
vm.localOverWriteDocument(duplicateFile, "ignore");
expect(vm.files).toBeDefined();
});
it('It should show localOverWriteDocument', function () {
vm.ducplicateSourceFile = {
pop: function ()
{ return true; },
filter: function () {
return true;
}
}
var duplicateFile = { "cancel": null, "fileType": "" };
vm.localOverWriteDocument(duplicateFile, "overwrite");
expect(vm.ducplicateSourceFile).toBe(true);
});
});
describe('Verification of showSelectedFolderTree function', function () {
it('It should show showSelectedFolderTree', function () {
var folder = {
"parentURL": "https://lcadms.sharepoint.com/sites/subsiteclient",
"active": true,
"children": { "child": { "active": true } }
};
vm.showSelectedFolderTree(folder);
expect(vm.showSelectedFolderTree).not.toThrow(Error);
});
});
describe('Verification of getContentCheckConfigurations function', function () {
it('It should show getContentCheckConfigurations', function () {
vm.getContentCheckConfigurations("https://lcadms.sharepoint.com/sites/subsiteclient");
expect(vm.oUploadGlobal.bAllowContentCheck).toBe(true);
});
});
});

Просмотреть файл

@ -0,0 +1,183 @@
/// <disable>JS2074, JS3058</disable>
// Test suite
describe("MatterDashBoard Controller test suite", function () {
"use strict";
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("matterDashBoardResource", ["$resource", "auth", mockMatterDashBoardResource]);
}));
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("api", ["matterResource", "documentResource", "documentDashBoardResource", "matterDashBoardResource", "homeResource", mockapi]);
}));
beforeEach(module("ui.router"));
beforeEach(module("ui.bootstrap"));
beforeEach(inject(function ($controller, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller("MatterDashBoardController as vm", { $scope: $scope, $state: $state, $stateParams: $stateParams, matterDashBoardResource: mockMatterDashBoardResource, api: mockapi, $rootScope: rootScope, $http: $http, $location: $location, $q: $q });
}));
describe("Verification of closealldrops function", function () {
it("It should close all dropdowns on click of the page", function () {
vm.closealldrops();
expect(vm.searchdrop).toBe(false);
expect(vm.downwarddrop).toBe(true);
expect(vm.upwarddrop).toBe(false);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.pgdrop).toBe(false);
expect(vm.pgdropvisible).toBe(false);
expect(vm.aoldrop).toBe(false);
expect(vm.aoldropvisible).toBe(false);
expect(vm.sortbydrop).toBe(false);
expect(vm.sortbydropvisible).toBe(false);
});
});
describe("Verification of hideinnerdrop function", function () {
it("It should hide all inner dropdownns", function () {
vm.hideinnerdrop(event);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.pgdrop).toBe(false);
expect(vm.pgdropvisible).toBe(false);
expect(vm.aoldrop).toBe(false);
expect(vm.aoldropvisible).toBe(false);
});
});
describe("Verification of filterSearchOK function", function () {
it("It should return selected client", function () {
vm.selectedClients = "";
vm.clients = clientobj;
vm.filterSearchOK("client");
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.selectedClientsForCancel).toBe(oTestConfiguration.sSelectedClient);
expect(vm.selectedClients).toBe(oTestConfiguration.sSelectedClient);
});
it("It should return selected practice group", function () {
vm.selectedPGs = "";
vm.practiceGroups = practicegroup;
vm.filterSearchOK("pg");
expect(vm.pgdropvisible).toBe(false);
expect(vm.pgdrop).toBe(false);
expect(vm.selectedPGsForCancel).toBe(oTestConfiguration.sSelectedPracticeGroup);
expect(vm.selectedPGs).toBe(oTestConfiguration.sSelectedPracticeGroup);
});
it("It should return selected AOL", function () {
vm.selectedAOLs = "";
vm.aolTerms = practicegroup;
vm.filterSearchOK("aol");
expect(vm.aoldropvisible).toBe(false);
expect(vm.aoldrop).toBe(false);
expect(vm.selectedAOLsForCancel).toBe(oTestConfiguration.sSelectedAreaOfLaw);
expect(vm.selectedAOLs).toBe(oTestConfiguration.sSelectedAreaOfLaw);
});
});
describe("Verification of filterSearchCancel function", function () {
it("It should trigger when the user clicks on 'Cancel' button in the filter panel", function () {
vm.filterSearchCancel("client");
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.pgdrop).toBe(false);
expect(vm.pgdropvisible).toBe(false);
expect(vm.aoldropvisible).toBe(false);
expect(vm.aoldrop).toBe(false);
});
});
describe("Verification of showupward function", function () {
it("It should show upward dropdown box", function () {
vm.showupward(event);
expect(vm.searchdrop).toBe(true);
expect(vm.downwarddrop).toBe(false);
expect(vm.upwarddrop).toBe(true);
});
});
describe("Verification of showdownward function", function () {
it("It should show downward dropdown box", function () {
vm.showdownward(event);
expect(vm.searchdrop).toBe(false);
expect(vm.upwarddrop).toBe(false);
expect(vm.downwarddrop).toBe(true);
});
});
describe("Verification of showsortby function", function () {
it("It should show sortby box", function () {
vm.sortbydropvisible = false;
vm.showsortby(event);
expect(vm.sortbydrop).toBe(true);
expect(vm.sortbydropvisible).toBe(true);
});
it("It should hide sortby box", function () {
vm.sortbydropvisible = true;
vm.showsortby(event);
expect(vm.sortbydrop).toBe(false);
expect(vm.sortbydropvisible).toBe(false);
});
});
describe("Verification of pagination function", function () {
it("It should disable pagination on the page", function () {
vm.totalrecords = 0;
vm.pagination();
expect(vm.fromtopage).toBe("1 - 0");
expect(vm.displaypagination).toBe(false);
});
it("It should enable pagination on the page", function () {
vm.totalrecords = 16;
vm.pagination();
expect(vm.fromtopage).toBe("1 - 16");
expect(vm.displaypagination).toBe(true);
});
});
describe("Verification of overwriteConfiguration function", function () {
it("It should return overwrite configuration for the file", function () {
var bAppendEnabled = vm.overwriteConfiguration("TestEmail.msg");
expect(bAppendEnabled).toBe(true);
});
});
describe("Verification of contentCheckNotification function", function () {
it("It should set upload file configurations to perform content check", function () {
vm.file = {};
vm.contentCheckNotification(vm.file, true);
expect(vm.file.contentCheck).toBe("contentCheck");
expect(vm.file.saveLatestVersion).toBe("False");
expect(vm.file.cancel).toBe("False");
});
});
describe("Verification of abortContentCheck function", function () {
it("It should set upload file configuration to abort content check", function () {
vm.file = {};
vm.file.value = "This";
vm.abortContentCheck(vm.file, false);
expect(vm.file.contentCheck).toBe(null);
expect(vm.file.saveLatestVersion).toBe("True");
expect(vm.file.value).toBe("This<br/><div>Content check has been aborted.</div>");
expect(vm.file.cancel).toBe("True");
});
});
describe("Verification of closeSuccessBanner function", function () {
it("It should close success banner", function () {
vm.closeSuccessBanner();
expect(vm.oUploadGlobal.successBanner).toBe(false);
});
});
});

Просмотреть файл

@ -0,0 +1,352 @@
//Test suite
describe('MatterDashBoard Controller test suite', function () {
var mockapi = function (matterDashBoardResource) {
getData(matterDashBoardResource, mockMatterDashBoardResource);
};
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("matterDashBoardResource", ['$resource', 'auth', mockMatterDashBoardResource]);
}));
beforeEach(module('matterMain'));
beforeEach(module('matterMain', function ($provide) {
$provide.factory("api", ['matterResource', 'documentResource', 'documentDashBoardResource', 'matterDashBoardResource', 'homeResource', mockapi]);
}));
beforeEach(module('ui.router'));
beforeEach(module('ui.bootstrap'));
beforeEach(inject(function ($controller, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller('MatterDashBoardController as vm', { $scope: $scope, $state: $state, $stateParams: $stateParams, matterDashBoardResource: mockMatterDashBoardResource, api: mockapi, $rootScope: rootScope, $http: $http, $location: $location, $q: $q });
}));
describe('Verification of getMatterCounts function', function () {
it('It should show MatterCounts', function () {
vm.getMatterCounts();
expect(vm.allMatterCount).toBeGreaterThan(0);
expect(vm.myMatterCount).toBeGreaterThan(0);
expect(vm.pinMatterCount).toBeGreaterThan(0);
expect(vm.totalrecords).toBeGreaterThan(0);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe('Verification of getMatterPinned function', function () {
it('It should get MatterPinned', function () {
vm.getMatterPinned();
expect(vm.pinnedResponse).not.toBe(null);
expect(vm.Pinnedobj.length).toBeDefined();
expect(vm.matterGridOptions.data).toBeDefined();
expect(vm.pinMatterCount).toBeDefined();
expect(vm.totalrecords).toBeDefined();
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
expect(vm.displaypagination).toBe(true);
});
});
//describe('Verification of searchMatters function', function () {
// it('It should get searchMatters', function () {
// vm.searchMatters("test");
// expect(vm.pagenumber).toBe(1);
// });
//});
describe('Verification of myMatters function', function () {
it('It should get myMatters', function () {
vm.searchText = "test";
vm.myMatterCount = 5;
vm.myMatters();
expect(vm.matterGridOptions.data.length).toBeGreaterThan(0);
expect(vm.totalrecords).toBeGreaterThan(1);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe('Verification of showClientDrop function', function () {
it('It should show clientdrop', function () {
vm.clientdropvisible = false;
vm.clients = undefined;
vm.showClientDrop(event);
expect(vm.clients).toBeDefined();
expect(vm.clientdrop).toBe(true);
expect(vm.clientdropvisible).toBe(true);
expect(vm.lazyloaderclient).toBe(true);
expect(vm.pgdrop).toBe(false);
expect(vm.pgdropvisible).toBe(false);
expect(vm.aoldrop).toBe(false);
expect(vm.aoldropvisible).toBe(false);
});
it('It should not show clientdrop', function () {
vm.clientdropvisible = true;
vm.showClientDrop(event);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.lazyloaderclient).toBe(true);
expect(vm.pgdrop).toBe(false);
expect(vm.pgdropvisible).toBe(false);
expect(vm.aoldrop).toBe(false);
expect(vm.aoldropvisible).toBe(false);
});
});
describe('Verification of myMatters function', function () {
it('It should get myMatters', function () {
vm.searchText = "test";
vm.myMatterCount = 5;
vm.myMatters();
expect(vm.matterGridOptions.data.length).toBeGreaterThan(0);
expect(vm.totalrecords).toBeGreaterThan(1);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe('Verification of FilterByType function', function () {
it('It should show FilterByType', function () {
vm.FilterByType();
expect(vm.totalrecords).toBeGreaterThan(0);
expect(vm.matterGridOptions.data.length).toBeGreaterThan(0);
expect(vm.lazyloader).toBe(true);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe('Verification of sortyby function', function () {
it('It should show sortyby', function () {
var sortexp = "AlphabeticalUp";
vm.sortyby(sortexp, "Searchkeyword");
expect(vm.nodata).toBe(true);
expect(vm.divuigrid).toBe(false);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe('Verification of next function', function () {
it('It should show next', function () {
vm.last = 5;
vm.totalrecords = 30;
vm.next();
expect(vm.first).toBeGreaterThan(0);
expect(vm.last).toBeGreaterThan(0);
expect(vm.total).toBeGreaterThan(0);
expect(vm.pagenumber).toBeGreaterThan(0);
expect(vm.fromtopage).toBe(vm.first + " - " + vm.totalrecords);
expect(vm.displaypagination).toBe(true);
expect(vm.matterGridOptions.data.length).toBeGreaterThan(0);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe('Verification of prev function', function () {
it('It should show prev', function () {
vm.last = 50;
vm.first = 50;
vm.prev();
expect(vm.first).toBeGreaterThan(0);
expect(vm.last).toBeGreaterThan(0);
expect(vm.pagenumber).toBe(0);
expect(vm.matterGridOptions.data.length).toBeGreaterThan(0);
expect(vm.fromtopage).toBe(vm.first + " - " + vm.last);
expect(vm.nodata).toBe(false);
expect(vm.divuigrid).toBe(true);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
describe('verification of showPracticegroupDrop function', function () {
it('It should show PracticegroupDrop', function () {
vm.pgdropvisible = false;
vm.practiceGroups = undefined;
vm.aolTerms = undefined;
vm.showPracticegroupDrop(event);
expect(vm.lazyloaderpg).toBe(true);
expect(vm.pgdrop).toBe(true);
expect(vm.pgdropvisible).toBe(true);
});
it('It should not show PracticegroupDrop', function () {
vm.pgdropvisible = false;
vm.practiceGroups = "data";
vm.aolTerms = "test";
vm.showPracticegroupDrop(event);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.pgdrop).toBe(true);
expect(vm.pgdropvisible).toBe(true);
expect(vm.aoldrop).toBe(false);
expect(vm.aoldropvisible).toBe(false);
});
it('It should not showPracticegroupDrop', function () {
vm.clientdropvisible = true;
vm.showClientDrop(event);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.lazyloaderpg).toBe(true);
expect(vm.pgdrop).toBe(false);
expect(vm.pgdropvisible).toBe(false);
expect(vm.aoldrop).toBe(false);
expect(vm.aoldropvisible).toBe(false);
});
});
describe('Verification of getFolderHierarchy function', function () {
it('It should show getFolderHierarchy', function () {
vm.getFolderHierarchy("Default Matter", "https://lcadms.sharepoint.com/sites/subsiteclient", "6cbca4ab447c87302d3a1f0e3c32985a");
expect(vm.oUploadGlobal.bAllowContentCheck).toBe(true);
expect(vm.foldersList.length).toBeGreaterThan(0);
expect(vm.showSelectedFolderTree).not.toBe(null);
expect(vm.lazyloader).toBe(true);
});
});
describe('Verification of Openuploadmodal function', function () {
it('It should show Openuploadmodal', function () {
vm.Openuploadmodal("Default Matter", "https://lcadms.sharepoint.com/sites/subsiteclient", "6cbca4ab447c87302d3a1f0e3c32985a");
expect(vm.oUploadGlobal.successBanner).toBe(false);
expect(vm.isLoadingFromDesktopStarted).toBe(false);
});
});
describe('Verification of showclients function', function () {
it('It should show showclients', function () {
vm.client = undefined;
vm.showclients(event);
expect(vm.clients).toBeDefined();
expect(vm.clientdrop).toBe(true);
expect(vm.clientdropvisible).toBe(true);
});
});
describe('Verification of getContentCheckConfigurations function', function () {
it('It should show getContentCheckConfigurations', function () {
vm.getContentCheckConfigurations("https://lcadms.sharepoint.com/sites/subsiteclient");
expect(vm.oUploadGlobal.bAllowContentCheck).toBe(true);
});
});
describe('Verification of showSelectedFolderTree function', function () {
it('It should show showSelectedFolderTree', function () {
var folder = {
"parentURL": "https://lcadms.sharepoint.com/sites/subsiteclient",
"active": true,
"children": { "active": true }
};
vm.showSelectedFolderTree(folder);
expect(vm.showSelectedFolderTree).not.toThrow(Error);
});
});
describe('Verification of localOverWriteDocument function', function () {
it('It should show localOverWriteDocument', function () {
vm.ducplicateSourceFile = {
pop: function ()
{ return true; }
}
vm.oUploadGlobal = {
"arrFiles": {
pop: function ()
{ return obj; }
}
};
vm.ducplicateSourceFile.length = 1;
var duplicateFile = { "cancel": null };
vm.localOverWriteDocument(duplicateFile, "ignore");
expect(vm.files).toBeDefined();
});
});
describe('Verification of search function', function () {
it('It should show search', function () {
vm.search("Test");
expect(vm.Pinnedobj).toBeDefined();
expect(vm.pinMatterCount).toBeGreaterThan(0);
expect(vm.matterGridOptions.data).toBeDefined();
expect(vm.totalrecords).toBe(0);
expect(vm.lazyloaderdashboard).toBe(true);
expect(vm.divuigrid).toBe(true);
});
});
describe('Verification of showAreaofLawDrop function', function () {
it('It should show showAreaofLawDrop', function () {
vm.aoldropvisible = false;
vm.practiceGroups = undefined;
vm.aolTerms = undefined;
vm.showAreaofLawDrop(event);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.lazyloaderaol).toBe(true);
expect(vm.pgdrop).toBe(false);
expect(vm.pgdropvisible).toBe(false);
});
it('It should not show showAreaofLawDrop', function () {
vm.clientdropvisible = true;
vm.showClientDrop(event);
expect(vm.clientdrop).toBe(false);
expect(vm.clientdropvisible).toBe(false);
expect(vm.lazyloaderaol).toBe(true);
expect(vm.pgdrop).toBe(false);
expect(vm.pgdropvisible).toBe(false);
expect(vm.aoldrop).toBe(false);
expect(vm.aoldropvisible).toBe(false);
});
});
describe('Verification of pinorunpin function', function () {
it('It should be added in pinned list and removed from pinned list', function () {
var count = vm.pinMatterCount;
count = count + 1;
event.currentTarget.src = "../images/pin-666.png";
vm.pinorunpin(event, oTestConfiguration.oMatterObject);
expect(count).toBeGreaterThan(0);
expect(vm.lazyloaderdashboard).toBe(true);
});
});
});

Просмотреть файл

@ -0,0 +1,30 @@
/// <disable>JS2074, JS3058</disable>
// Test suite
describe("Navigation Controller test suite", function () {
var mockapi = function (navigationResource, callback) {
getData(navigationResource, mocknavigationResource);
};
beforeEach(module("matterMain"));
beforeEach(module("matterMain", function ($provide) {
$provide.factory("api", ["matterResource", "documentResource", "documentDashBoardResource", "matterDashBoardResource", "homeResource", mockapi]);
}));
beforeEach(module("ui.router"));
beforeEach(module("ui.bootstrap"));
beforeEach(inject(function ($controller, $rootScope) {
rootScope = $rootScope.$new();
vm = $controller("navigationController as vm", { $scope: $scope, $state: $state, $stateParams: $stateParams, api: mockapi, $rootScope: rootScope });
}));
describe("Verification of canCreateMatter function", function () {
it("It should display the navigation content", function () {
vm.canCreateMatter();
expect(vm.canLoginUserCreateMatter).toBe(true);
});
});
});

Просмотреть файл

@ -0,0 +1,13 @@
// Test suite
describe("Upload Controller test suite", function () {
"use strict";
var upload = matter.upload.uploadManager;
describe("Verification of closeNotificationDialog function", function () {
it("Should close notification dialog box", function () {
////cm.closeNotificationDialog();
////expect(cm.IsDupliacteDocument).toBe(false);
});
});
});

Просмотреть файл

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an attribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>

Просмотреть файл

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an attribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>

Просмотреть файл

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5.2"/>
<httpRuntime targetFramework="4.5.2"/>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
</compilers>
</system.codedom>
</configuration>

Просмотреть файл

@ -0,0 +1,22 @@
{
"name": "asp.net",
"private": true,
"dependencies": {
"jasmine": "2.4.1",
"bootstrap": "3.3.5",
"jquery": "2.1.4",
"jquery-validation": "1.14.0",
"jquery-validation-unobtrusive": "3.2.4",
"angularjs": "1.5.2",
"angular-route": "1.5.2",
"angular-resource": "1.5.2",
"angular-sanitize": "1.5.2",
"adal-angular": "1.0.11",
"angular-ui-grid": "3.1.1",
"angular-bootstrap": "1.3.2",
"jasmine-core": "2.4.1"
},
"resolutions": {
"angular": "1.5.2"
}
}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,47 @@
/**
* @license Angulartics v0.17.2
* (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
* Microsoft Azure Application Insights plugin contributed by https://github.com/anthonychu
* License: MIT
*/
(function (angular) {
'use strict';
/**
* @ngdoc overview
* @name angulartics.azure
* Enables analytics support for Microsoft Azure Application Insights (http://azure.microsoft.com/en-us/services/application-insights/)
*/
angular.module('angulartics.azure', ['angulartics'])
.config(['$analyticsProvider', function ($analyticsProvider, $locationProvider) {
$analyticsProvider.registerPageTrack(function (path, $location) {
appInsights.trackPageView(path, $location.absUrl(), { "App Type" : configs.appInsights.appType});
});
/**
* Numeric properties are sent as metric (measurement) properties.
* Everything else is sent as normal properties.
*/
$analyticsProvider.registerEventTrack(function (eventName, eventProperties) {
var properties = {};
var measurements = {};
angular.forEach(eventProperties, function (value, key) {
if (isNumeric(value)) {
measurements[key] = parseFloat(value);
} else {
properties[key] = value;
}
});
appInsights.trackEvent(eventName, properties, measurements);
});
}]);
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
})(angular);

Просмотреть файл

@ -0,0 +1 @@
// Write your Javascript code.

Просмотреть файл

@ -0,0 +1 @@
!function(a){"use strict";function n(a){return!isNaN(parseFloat(a))&&isFinite(a)}a.module("angulartics.azure",["angulartics"]).config(["$analyticsProvider",function(t,i){t.registerPageTrack(function(a,n){appInsights.trackPageView(a,n.absUrl(),{"App Type":configs.appInsights.appType})}),t.registerEventTrack(function(t,i){var r={},e={};a.forEach(i,function(a,t){n(a)?e[t]=parseFloat(a):r[t]=a}),appInsights.trackEvent(t,r,e)})}])}(angular);

Просмотреть файл

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Bower" version="1.3.11" targetFramework="net452" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
<package id="Node.js" version="0.10.28" targetFramework="net452" />
<package id="NoGit" version="0.0.8" targetFramework="net452" />
</packages>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,217 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.ProviderService
// Author : v-rijadh
// Created : 11-28-2014
//
// ***********************************************************************
// <copyright file="SearchConstants.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file contains search constants for managed search properties.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.ProviderService
{
#region using
using Microsoft.Legal.MatterCenter.Entity;
using Microsoft.Legal.MatterCenter.Utility;
#endregion
internal static class SearchConstants
{
/// <summary>
/// The managed property responsible attorney
/// </summary>
internal static readonly string ManagedPropertyResponsibleAttorney = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Responsible_Attorney", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property team members
/// </summary>
internal static readonly string ManagedPropertyTeamMembers = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Team_Members", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property site name
/// </summary>
internal static readonly string ManagedPropertySiteName = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Site_Name", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property custom title
/// </summary>
internal static readonly string ManagedPropertyCustomTitle = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Custom_Title", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property is matter
/// </summary>
internal static readonly string ManagedPropertyIsMatter = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Is_Matter", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property title
/// </summary>
internal static string ManagedPropertyTitle = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Title", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property name
/// </summary>
internal static string ManagedPropertyName = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Name", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property description
/// </summary>
internal static readonly string ManagedPropertyDescription = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Description", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property last modified time
/// </summary>
internal static readonly string ManagedPropertyLastModifiedTime = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Last_Modified_Time", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property last modified time for documents
/// </summary>
internal static readonly string ManagedPropertyDocumentLastModifiedTime = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Document_Last_Modified_Time", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property practice group
/// </summary>
internal static readonly string ManagedPropertyPracticeGroup = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Practice_Group", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property area of law
/// </summary>
internal static readonly string ManagedPropertyAreaOfLaw = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Area_Of_Law", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property sub area of law
/// </summary>
internal static readonly string ManagedPropertySubAreaOfLaw = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Sub_Area_Of_Law", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property matter identifier
/// </summary>
internal static readonly string ManagedPropertyMatterId = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Matter_Id", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property path
/// </summary>
internal static readonly string ManagedPropertyPath = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Path", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property matter name
/// </summary>
internal static readonly string ManagedPropertyMatterName = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Matter_Name", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property open date
/// </summary>
internal static readonly string ManagedPropertyOpenDate = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Open_Date", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property client name
/// </summary>
internal static readonly string ManagedPropertyClientName = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Client_Name", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property author
/// </summary>
internal static readonly string ManagedPropertyAuthor = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Author", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property author
/// </summary>
internal static readonly string ManagedPropertyFileName = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_File_Name", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property is document
/// </summary>
internal static readonly string ManagedPropertyIsDocument = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Is_Document", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property server relative URL
/// </summary>
internal static readonly string ManagedPropertyServerRelativeUrl = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Server_Relative_Url", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property file extension
/// </summary>
internal static readonly string ManagedPropertyFileExtension = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_File_Extension", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property created
/// </summary>
internal static readonly string ManagedPropertyCreated = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Created", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property UI version string OWSTEXT
/// </summary>
internal static readonly string ManagedPropertyUIVersionStringOWSTEXT = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_UI_Version_String_OWSTEXT", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property site title
/// </summary>
internal static readonly string ManagedPropertySiteTitle = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Site_Title", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property document client identifier
/// </summary>
internal static readonly string ManagedPropertyDocumentClientId = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Document_Client_Id", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property document client name
/// </summary>
internal static readonly string ManagedPropertyDocumentClientName = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Document_Client_Name", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property document matter identifier
/// </summary>
internal static readonly string ManagedPropertyDocumentMatterId = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Document_Matter_Id", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property document matter name
/// </summary>
internal static readonly string ManagedPropertyDocumentMatterName = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Document_Matter_Name", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property document identifier
/// </summary>
internal static readonly string ManagedPropertyDocumentId = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Document_Id", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property checked out by user
/// </summary>
internal static readonly string ManagedPropertyCheckOutByUser = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_CheckOut_By_User", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The managed property blocked upload users
/// </summary>
internal static readonly string ManagedPropertyBlockedUploadUsers = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Blocked_Upload_Users", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The manage property Client ID
/// </summary>
internal static readonly string ManagedPropertyClientID = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Client_Id", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Represents the SPWebUrl managed property associated with the document
/// </summary>
internal static readonly string ManagedPropertySPWebUrl = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_SPWeb_Url", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Holds the managed property for retrieving version of the document
/// </summary>
internal static readonly string ManagedPropertyDocumentVersion = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Document_Version", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Holds the managed property for retrieving checked out user of the document
/// </summary>
internal static readonly string ManagedPropertyDocumentCheckOutUser = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Managed_Property_Document_CheckOutUser", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Holds the managed property for retrieving GUID of matter
/// </summary>
internal static readonly string ManagedPropertyMatterGuid = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Matter_GUID", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Holds the search result source ID
/// </summary>
internal static readonly string SearchResultSourceID = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Search_Result_Source_ID", Enumerators.ResourceFileLocation.App_GlobalResources);
}
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,400 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.ProviderService
// Author : v-akdigh
// Created : 11-28-2014
//
// ***********************************************************************
// <copyright file="TextConstants.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file contains messages displayed to user.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.ProviderService
{
#region using
using Microsoft.Legal.MatterCenter.Entity;
using Microsoft.Legal.MatterCenter.Utility;
#endregion
/// <summary>
/// Provides Text constants used in Matter Center.
/// </summary>
internal static class TextConstants
{
/// <summary>
/// The message no inputs
/// </summary>
internal static readonly string MessageNoInputs = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Message_No_Inputs", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The share list column mail list
/// </summary>
internal static readonly string ShareListColumnMailBody = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Share_List_Column_Mail_Body", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The share list column mail list
/// </summary>
internal static readonly string ShareListColumnMailSubject = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Share_List_Column_Mail_Subject", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// HTML chunk of the Default content type for Matter creation mail
/// </summary>
internal static readonly string MatterMailDefaultContentTypeHtmlChunk = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Matter_Mail_Default_Content_Type_Html_Chunk", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Subject of the matter creation mail
/// </summary>
internal static readonly string MatterMailSubject = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Matter_Mail_Subject", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Request Object message
/// </summary>
internal static readonly string IncorrectInputRequestObjectMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Request_Object_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Request Object code
/// </summary>
internal static readonly string IncorrectInputRequestObjectCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Request_Object_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Client URL message
/// </summary>
internal static readonly string IncorrectInputClientUrlMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Client_Url_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Client URL code
/// </summary>
internal static readonly string IncorrectInputClientUrlCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Client_Url_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Client Id message
/// </summary>
internal static readonly string IncorrectInputClientIdMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Client_Id_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Client Id code
/// </summary>
internal static readonly string IncorrectInputClientIdCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Client_Id_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Client name message
/// </summary>
internal static readonly string IncorrectInputClientNameMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Client_Name_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// REGEX pattern for email validation
/// </summary>
internal static readonly string EmailValidationRegex = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Email_Validation_Regex", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Client name code
/// </summary>
internal static readonly string IncorrectInputClientNameCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Client_Name_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Practice Group message
/// </summary>
internal static readonly string IncorrectInputPracticeGroupMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Practice_Group_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Practice Group code
/// </summary>
internal static readonly string IncorrectInputPracticeGroupCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Practice_Group_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Area Of Law message
/// </summary>
internal static readonly string IncorrectInputAreaOfLawMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Area_Of_Law_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Area Of Law code
/// </summary>
internal static readonly string IncorrectInputAreaOfLawCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Area_Of_Law_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Sub Area Of Law message
/// </summary>
internal static readonly string IncorrectInputSubareaOfLawMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Subarea_Of_Law_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Sub Area Of Law code
/// </summary>
internal static readonly string IncorrectInputSubareaOfLawCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Subarea_Of_Law_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Responsible Attorney message
/// </summary>
internal static readonly string IncorrectInputResponsibleAttorneyMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Responsible_Attorney_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Responsible Attorney code
/// </summary>
internal static readonly string IncorrectInputResponsibleAttorneyCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Responsible_Attorney_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Matter name message
/// </summary>
internal static readonly string IncorrectInputMatterNameMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Matter_Name_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Matter name code
/// </summary>
internal static readonly string IncorrectInputMatterNameCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Matter_Name_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Matter Id message
/// </summary>
internal static readonly string IncorrectInputMatterIdMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Matter_Id_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Matter Id code
/// </summary>
internal static readonly string IncorrectInputMatterIdCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Matter_Id_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect user name message
/// </summary>
internal static readonly string IncorrectInputUserNamesMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_User_Names_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect user name code
/// </summary>
internal static readonly string IncorrectInputUserNamesCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_User_Names_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect user permission message
/// </summary>
internal static readonly string IncorrectInputUserPermissionsMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_User_Permissions_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect user permission code
/// </summary>
internal static readonly string IncorrectInputUserPermissionsCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_User_Permissions_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Content Type message
/// </summary>
internal static readonly string IncorrectInputContentTypeMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Content_Type_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Content Type code
/// </summary>
internal static readonly string IncorrectInputContentTypeCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Content_Type_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Matter description message
/// </summary>
internal static readonly string IncorrectInputMatterDescriptionMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Matter_Description_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect Matter description code
/// </summary>
internal static readonly string IncorrectInputMatterDescriptionCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Matter_Description_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect conflict date message
/// </summary>
internal static readonly string IncorrectInputConflictDateMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Conflict_Date_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect conflict date code
/// </summary>
internal static readonly string IncorrectInputConflictDateCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Conflict_Date_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect conflict identified message
/// </summary>
internal static readonly string IncorrectInputConflictIdentifiedMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Conflict_Identified_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect conflict identified code
/// </summary>
internal static readonly string IncorrectInputConflictIdentifiedCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Conflict_Identified_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect user roles message
/// </summary>
internal static readonly string IncorrectInputUserRolesMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_User_Roles_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect user roles code
/// </summary>
internal static readonly string IncorrectInputUserRolesCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_User_Roles_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect conflict check by message
/// </summary>
internal static readonly string IncorrectInputConflictCheckByMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Conflict_Check_By_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect conflict check by code
/// </summary>
internal static readonly string IncorrectInputConflictCheckByCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Conflict_Check_By_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect block users message
/// </summary>
internal static readonly string IncorrectInputBlockUserNamesMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Block_User_Names_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Incorrect block users code
/// </summary>
internal static readonly string IncorrectInputBlockUserNamesCode = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Incorrect_Input_Block_User_Names_Code", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The Is Read Only User key name, used to determine if user is read-only user for particular matter
/// </summary>
internal static readonly string IsReadOnlyUser = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Is_Read_Only_User", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The no mail subject
/// </summary>
internal static readonly string NoMailSubject = ConstantStrings.GetConfigurationFromResourceFile("Constants", "No_Mail_Subject", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The missing parameters message
/// </summary>
internal static readonly string MissingParametersMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Parameter_Missing_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The invalid parameters message
/// </summary>
internal static readonly string InvalidParametersMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Parameter_Invalid_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The mail cart mail subject
/// </summary>
internal static readonly string MailCartMailSubject = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Mail_Cart_Mail_Subject", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// The mail cart mail body
/// </summary>
internal static readonly string MailCartMailBody = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Mail_Cart_Mail_Body", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Link to templates document library on content type hub
/// </summary>
internal static readonly string FileNotAvailableMessage = ConstantStrings.GetConfigurationFromResourceFile("Constants", "File_Not_Available_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Success message on deletion of matter
/// </summary>
internal static readonly string MatterDeletedSuccessfully = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Matter_Deletion_Message", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Holds the message for no data returned from people picker control based on the search term.
/// </summary>
internal static readonly string PeoplePickerNoResults = ConstantStrings.GetConfigurationFromResourceFile("Constants", "People_Picker_No_Results_Found", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error code for issue when Content Types selected by the users are not present in the Content Type hub or site collection where the matter library is created
/// </summary>
/// <value>Error code when for issue when Content Types selected by the users are not present in the Content Type hub or site collection where the matter library is created</value>
internal static readonly string ErrorCodeContentTypes = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorCodeContentType", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error code for issue when creation of site column while sending document to OneDrive
/// </summary>
/// <value>Error code for issue when creation of site column while sending document to OneDrive</value>
internal static readonly string ErrorCodeCreateSiteColumn = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorCodeCreateSiteColumn", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error code for issue when creation of site content type while sending document to OneDrive
/// </summary>
/// <value>Error code for issue when creation of site content type while sending document to OneDrive</value>
internal static readonly string ErrorCodeCreateSiteContentType = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorCodeCreateSiteContentType", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error code for issue when assigning default site content type while sending document to OneDrive
/// </summary>
/// <value>Error code for issue when assigning default site content type while sending document to OneDrive</value>
internal static readonly string ErrorCodeAssignDefaultContentType = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorCodeAssignDefaultContentType", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error code for issue when OneDrive is not configured for user
/// </summary>
/// <value>Error code for issue when OneDrive is not configured for user</value>
internal static readonly string ErrorCodeOneDriveNotConfigured = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorCodeOneDriveNotConfigured", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error message for issue when creation of site column while sending document to OneDrive
/// </summary>
/// <value>Error message for issue when creation of site column while sending document to OneDrive</value>
internal static readonly string ErrorMessageCreateSiteColumn = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorMessageCreateSiteColumn", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error message for issue when creation of site content type while sending document to OneDrive
/// </summary>
/// <value>Error message for issue when creation of site content type while sending document to OneDrive</value>
internal static readonly string ErrorMessageCreateSiteContentType = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorMessageCreateSiteContentType", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error message for issue when assigning default site content type while sending document to OneDrive
/// </summary>
/// <value>Error message for issue when assigning default site content type while sending document to OneDrive</value>
internal static readonly string ErrorMessageAssignDefaultContentType = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorMessageAssignDefaultContentType", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error message for issue when Content Types selected by the users are not present in the Content Type hub or site collection where the matter library is created
/// </summary>
/// <value>Error message when for issue when Content Types selected by the users are not present in the Content Type hub or site collection where the matter library is created</value>
internal static readonly string ErrorMessageContentTypes = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorMessageContentType", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error code when there is an issue while assigning permissions to calendar list
/// </summary>
/// <value>Error code when there is an issue while assigning permissions to calendar list</value>
internal static readonly string ErrorCodeCalendarCreation = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorCodeCalendarCreation", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error code when there is an issue while assigning permissions to calendar list
/// </summary>
/// <value>Error code when there is an issue while assigning permissions to calendar list</value>
internal static readonly string ErrorMessageTaskCreation = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorMessageTaskCreation", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error message when there is an issue while assigning permissions to calendar list
/// </summary>
/// <value>Error message when there is an issue while assigning permissions to calendar list</value>
internal static readonly string ErrorMessageCalendarCreation = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorMessageCalendarCreation", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error code when there is an issue while creating calendar list
/// </summary>
/// <value>Error code when there is an issue while creating calendar list</value>
internal static readonly string ErrorCodeAddCalendarList = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorCodeAddCalendarList", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error code when there is an issue while creating task list
/// </summary>
/// <value>Error code when there is an issue while creating task list</value>
internal static readonly string ErrorCodeAddTaskList = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorCodeAddTaskList", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error message when there is an issue while creating calendar list
/// </summary>
/// <value>Error message when there is an issue while creating calendar list</value>
internal static readonly string ErrorMessageAddCalendarList = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorMessageAddCalendarList", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the error message when there is an issue while creating task list
/// </summary>
/// <value>Error message when there is an issue while creating task list</value>
internal static readonly string ErrorMessageAddTaskList = ConstantStrings.GetConfigurationFromResourceFile("Constants", "ErrorMessageAddTaskList", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the body of the matter mail for conflict check
/// </summary>
internal static readonly string MatterMailBodyConflictCheck = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Matter_Mail_Body_Conflict_Check", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the body of the matter mail for Team Members
/// </summary>
internal static readonly string MatterMailBodyTeamMembers = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Matter_Mail_Body_Team_Members", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Gets the body of the matter mail for Matter Information
/// </summary>
internal static readonly string MatterMailBodyMatterInformation = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Matter_Mail_Body_Matter_Information", Enumerators.ResourceFileLocation.App_GlobalResources);
}
}

Просмотреть файл

@ -1,262 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.ProviderService
// Author : v-shpate
// Created : 11-28-2014
//
// ***********************************************************************
// <copyright file="WebpartConstants.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file contains constants required for creating web part in SharePoint.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.ProviderService
{
#region using
using Microsoft.Legal.MatterCenter.Entity;
using Microsoft.Legal.MatterCenter.Utility;
#endregion
internal static class WebpartConstants
{
/// <summary>
/// XML definition of the left web part
/// </summary>
internal const string ContentEditorWebPart = @"<?xml version=""1.0"" encoding=""utf-8""?>
<WebPart xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.microsoft.com/WebPart/v2"">
<Title>Content Editor</Title>
<FrameType>None</FrameType>
<Description>Allows authors to enter rich text content.</Description>
<IsIncluded>true</IsIncluded>
<ZoneID>MiddleLeftZone</ZoneID>
<PartOrder>0</PartOrder>
<FrameState>Normal</FrameState>
<Height />
<Width />
<AllowRemove>true</AllowRemove>
<AllowZoneChange>true</AllowZoneChange>
<AllowMinimize>true</AllowMinimize>
<AllowConnect>true</AllowConnect>
<AllowEdit>true</AllowEdit>
<AllowHide>true</AllowHide>
<IsVisible>true</IsVisible>
<DetailLink />
<HelpLink />
<HelpMode>Modeless</HelpMode>
<Dir>Default</Dir>
<PartImageSmall />
<MissingAssembly>Cannot import this Web Part.</MissingAssembly>
<PartImageLarge>/_layouts/15/images/mscontl.gif</PartImageLarge>
<IsIncludedFilter />
<Assembly>Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
<TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>
<ContentLink xmlns=""http://schemas.microsoft.com/WebPart/v2/ContentEditor"" />
<Content xmlns=""http://schemas.microsoft.com/WebPart/v2/ContentEditor"">
<![CDATA[
{0}
]]>
</Content>
<PartStorage xmlns=""http://schemas.microsoft.com/WebPart/v2/ContentEditor"" />
</WebPart>";
/// <summary>
/// XML definition of the RSS feed web part
/// </summary>
internal const string RssFeedWebpart = @"<webParts>
<webPart xmlns=""http://schemas.microsoft.com/WebPart/v3"">
<metaData>
<type name=""Microsoft.SharePoint.Portal.WebControls.RSSAggregatorWebPart, Microsoft.SharePoint.Portal, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"" />
<importErrorMessage>Cannot import this web part.</importErrorMessage>
</metaData>
<data>
<properties>
<property name=""InitialAsyncDataFetch"" type=""bool"">False</property>
<property name=""ChromeType"" type=""chrometype"">None</property>
<property name=""ListName"" type=""string"" null=""true"" />
<property name=""Height"" type=""string"" />
<property name=""CacheXslStorage"" type=""bool"">True</property>
<property name=""Default"" type=""string"" />
<property name=""ParameterBindings"" type=""string"">&lt;ParameterBinding Name=""RequestUrl"" Location=""WPProperty[FeedUrl]""/&gt;</property>
<property name=""AllowZoneChange"" type=""bool"">True</property>
<property name=""AutoRefresh"" type=""bool"">False</property>
<property name=""XmlDefinitionLink"" type=""string"" />
<property name=""DataFields"" type=""string"" />
<property name=""FeedLimit"" type=""int"">5</property>
<property name=""Hidden"" type=""bool"">False</property>
<property name=""NoDefaultStyle"" type=""string"" />
<property name=""XslLink"" type=""string"" null=""true"" />
<property name=""ViewFlag"" type=""string"">0</property>
<property name=""CatalogIconImageUrl"" type=""string"" />
<property name=""CacheXslTimeOut"" type=""int"">600</property>
<property name=""AutoRefreshInterval"" type=""int"">60</property>
<property name=""AllowConnect"" type=""bool"">True</property>
<property name=""FeedUrl"" type=""string"">http://www.bing.com/search?q={0}&amp;format=rss</property>
<property name=""AllowClose"" type=""bool"">True</property>
<property name=""ShowWithSampleData"" type=""bool"">False</property>
<property name=""EnableOriginalValue"" type=""bool"">False</property>
<property name=""ExpandFeed"" type=""bool"">False</property>
<property name=""ListUrl"" type=""string"" null=""true"" />
<property name=""DataSourceID"" type=""string"" />
<property name=""FireInitialRow"" type=""bool"">True</property>
<property name=""ManualRefresh"" type=""bool"">False</property>
<property name=""ViewFlags"" type=""Microsoft.SharePoint.SPViewFlags, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"">None</property>
<property name=""ChromeState"" type=""chromestate"">Normal</property>
<property name=""AllowHide"" type=""bool"">True</property>
<property name=""ListDisplayName"" type=""string"" null=""true"" />
<property name=""SampleData"" type=""string"" null=""true"" />
<property name=""AsyncRefresh"" type=""bool"">False</property>
<property name=""Direction"" type=""direction"">NotSet</property>
<property name=""Title"" type=""string"">RSS Viewer</property>
<property name=""ListId"" type=""System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"">00000000-0000-0000-0000-000000000000</property>
<property name=""Description"" type=""string"">Displays an RSS feed.</property>
<property name=""AllowMinimize"" type=""bool"">True</property>
<property name=""TitleUrl"" type=""string"" />
<property name=""DataSourcesString"" type=""string"">
&lt;%@ Register TagPrefix=""WebControls"" Namespace=""Microsoft.SharePoint.WebControls"" Assembly=""Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"" %&gt;
&lt;%@ Register TagPrefix=""WebPartPages"" Namespace=""Microsoft.SharePoint.WebPartPages"" Assembly=""Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"" %&gt;
&lt;WebControls:XmlUrlDataSource runat=""server"" AuthType=""None"" HttpMethod=""GET""&gt;
&lt;DataFileParameters&gt;
&lt;WebPartPages:DataFormParameter Name=""RequestUrl"" ParameterKey=""RequestUrl"" PropertyName=""ParameterValues""/&gt;
&lt;/DataFileParameters&gt;
&lt;/WebControls:XmlUrlDataSource&gt;</property>
<property name=""DisplayName"" type=""string"" />
<property name=""PageType"" type=""Microsoft.SharePoint.PAGETYPE, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"">PAGE_NORMALVIEW</property>
<property name=""Width"" type=""string"" />
<property name=""AllowEdit"" type=""bool"">True</property>
<property name=""ExportMode"" type=""exportmode"">All</property>
<property name=""CacheRefreshTimeInMins"" type=""int"">120</property>
<property name=""PageSize"" type=""int"">-1</property>
<property name=""ViewContentTypeId"" type=""string"" />
<property name=""HelpUrl"" type=""string"" />
<property name=""XmlDefinition"" type=""string"" />
<property name=""UseSQLDataSourcePaging"" type=""bool"">True</property>
<property name=""TitleIconImageUrl"" type=""string"" />
<property name=""MissingAssembly"" type=""string"">Cannot import this web part.</property>
<property name=""HelpMode"" type=""helpmode"">Modeless</property>
</properties>
</data>
</webPart>
</webParts>";
/// <summary>
/// XML definition of the list view web part
/// </summary>
internal const string ListviewWebpart = @"
<webParts>
<webPart xmlns=""http://schemas.microsoft.com/WebPart/v3"">
<metaData>
<type name=""Microsoft.SharePoint.WebPartPages.XsltListViewWebPart, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"" />
<importErrorMessage>Cannot import this Web Part.</importErrorMessage>
</metaData>
<data>
<properties>
<property name=""ShowWithSampleData"" type=""bool"">False</property>
<property name=""Default"" type=""string"" />
<property name=""NoDefaultStyle"" type=""string"" null=""true"" />
<property name=""CacheXslStorage"" type=""bool"">True</property>
<property name=""ViewContentTypeId"" type=""string"" />
<property name=""XmlDefinitionLink"" type=""string"" />
<property name=""ManualRefresh"" type=""bool"">False</property>
<property name=""ListUrl"" type=""string"" />
<property name=""ListId"" type=""System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"">{0}</property>
<property name=""TitleUrl"" type=""string"">{1}</property>
<property name=""EnableOriginalValue"" type=""bool"">False</property>
<property name=""Direction"" type=""direction"">NotSet</property>
<property name=""ServerRender"" type=""bool"">False</property>
<property name=""ViewFlags"" type=""Microsoft.SharePoint.SPViewFlags, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"">Html, TabularView, Hidden, Mobile</property>
<property name=""AllowConnect"" type=""bool"">True</property>
<property name=""ListName"" type=""string"">{2}</property>
<property name=""ListDisplayName"" type=""string"" />
<property name=""AllowZoneChange"" type=""bool"">True</property>
<property name=""ChromeState"" type=""chromestate"">Normal</property>
<property name=""DisableSaveAsNewViewButton"" type=""bool"">False</property>
<property name=""ViewFlag"" type=""string"" />
<property name=""DataSourceID"" type=""string"" />
<property name=""ExportMode"" type=""exportmode"">All</property>
<property name=""AutoRefresh"" type=""bool"">False</property>
<property name=""FireInitialRow"" type=""bool"">True</property>
<property name=""AllowEdit"" type=""bool"">True</property>
<property name=""Description"" type=""string"" />
<property name=""HelpMode"" type=""helpmode"">Modeless</property>
<property name=""BaseXsltHashKey"" type=""string"" null=""true"" />
<property name=""AllowMinimize"" type=""bool"">True</property>
<property name=""CacheXslTimeOut"" type=""int"">86400</property>
<property name=""ChromeType"" type=""chrometype"">None</property>
<property name=""Xsl"" type=""string"" null=""true"" />
<property name=""JSLink"" type=""string"" null=""true"" />
<property name=""CatalogIconImageUrl"" type=""string"">/_layouts/15/images/itdl.png?rev=33</property>
<property name=""SampleData"" type=""string"" null=""true"" />
<property name=""UseSQLDataSourcePaging"" type=""bool"">True</property>
<property name=""TitleIconImageUrl"" type=""string"" />
<property name=""PageSize"" type=""int"">-1</property>
<property name=""ShowTimelineIfAvailable"" type=""bool"">True</property>
<property name=""Width"" type=""string"" >750px</property>
<property name=""DataFields"" type=""string"" />
<property name=""Hidden"" type=""bool"">False</property>
<property name=""Title"" type=""string"" />
<property name=""PageType"" type=""Microsoft.SharePoint.PAGETYPE, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"">PAGE_NORMALVIEW</property>
<property name=""DataSourcesString"" type=""string"" />
<property name=""AllowClose"" type=""bool"">True</property>
<property name=""InplaceSearchEnabled"" type=""bool"">True</property>
<property name=""WebId"" type=""System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"">00000000-0000-0000-0000-000000000000</property>
<property name=""Height"" type=""string"" />
<property name=""GhostedXslLink"" type=""string"">main.xsl</property>
<property name=""DisableViewSelectorMenu"" type=""bool"">False</property>
<property name=""DisplayName"" type=""string"" />
<property name=""IsClientRender"" type=""bool"">False</property>
<property name=""XmlDefinition"" type=""string"">&lt;View Name=""{3}"" MobileView=""TRUE"" Type=""HTML"" Hidden=""TRUE"" DisplayName="" "" Url=""{4}"" Level=""1"" BaseViewID=""1"" ContentTypeID=""0x"" ImageUrl=""/_layouts/15/images/dlicon.png?rev=37"" &gt;&lt;Query&gt;&lt;OrderBy&gt;&lt;FieldRef Name=""FileLeafRef""/&gt;&lt;/OrderBy&gt;&lt;/Query&gt;&lt;ViewFields&gt;&lt;FieldRef Name=""DocIcon""/&gt;&lt;FieldRef Name=""LinkFilename""/&gt;&lt;FieldRef Name=""Modified""/&gt;&lt;FieldRef Name=""Editor""/&gt;&lt;/ViewFields&gt;&lt;RowLimit Paged=""TRUE""&gt;30&lt;/RowLimit&gt;&lt;JSLink&gt;clienttemplates.js&lt;/JSLink&gt;&lt;XslLink Default=""TRUE""&gt;main.xsl&lt;/XslLink&gt;&lt;Toolbar Type=""Standard""/&gt;&lt;/View&gt;</property>
<property name=""InitialAsyncDataFetch"" type=""bool"">False</property>
<property name=""AllowHide"" type=""bool"">True</property>
<property name=""ParameterBindings"" type=""string"">
&lt;ParameterBinding Name=""dvt_sortdir"" Location=""Postback;Connection""/&gt;
&lt;ParameterBinding Name=""dvt_sortfield"" Location=""Postback;Connection""/&gt;
&lt;ParameterBinding Name=""dvt_startposition"" Location=""Postback"" DefaultValue="" ""/&gt;
&lt;ParameterBinding Name=""dvt_firstrow"" Location=""Postback;Connection""/&gt;
&lt;ParameterBinding Name=""OpenMenuKeyAccessible"" Location=""Resource(wss,OpenMenuKeyAccessible)"" /&gt;
&lt;ParameterBinding Name=""open_menu"" Location=""Resource(wss,open_menu)"" /&gt;
&lt;ParameterBinding Name=""select_deselect_all"" Location=""Resource(wss,select_deselect_all)"" /&gt;
&lt;ParameterBinding Name=""idPresEnabled"" Location=""Resource(wss,idPresEnabled)"" /&gt;&lt;ParameterBinding Name=""NoAnnouncements"" Location=""Resource(wss,noitemsinview_doclibrary)"" /&gt;&lt;ParameterBinding Name=""NoAnnouncementsHowTo"" Location=""Resource(wss,noitemsinview_doclibrary_howto2)"" /&gt;</property>
<property name=""DataSourceMode"" type=""Microsoft.SharePoint.WebControls.SPDataSourceMode, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"">List</property>
<property name=""AutoRefreshInterval"" type=""int"">60</property>
<property name=""AsyncRefresh"" type=""bool"">False</property>
<property name=""HelpUrl"" type=""string"" />
<property name=""MissingAssembly"" type=""string"">Cannot import this Web Part.</property>
<property name=""XslLink"" type=""string"" null=""true"" />
<property name=""SelectParameters"" type=""string"" />
<property name=""HasClientDataSource"" type=""bool"">False</property>
</properties>
</data>
</webPart>
</webParts>";
/// <summary>
/// Matter Landing page sections
/// </summary>
internal static string MatterLandingPageSections = ConstantStrings.GetConfigurationFromResourceFile("Constants", "Matter_Landing_Page_Sections", Enumerators.ResourceFileLocation.App_GlobalResources);
/// <summary>
/// Section to be appended on the page
/// </summary>
internal const string MatterLandingSectionContent = "<div id=\"{0}\"></div>";
/// <summary>
/// Style tag
/// </summary>
internal const string StyleTag = "<link href=\"{0}\" type=\"text/css\" rel=\"stylesheet\" />";
/// <summary>
/// Script tag
/// </summary>
internal const string ScriptTag = "<script src=\"{0}\" type=\"text/javascript\"></script>";
/// <summary>
/// Script tag with contents
/// </summary>
internal const string ScriptTagWithContents = "<script type=\"text/javascript\">{0}</script>";
/// <summary>
/// Matter landing stamp properties
/// </summary>
internal const string matterLandingStampProperties = "var documentLibraryName = \"{0}\", isNewMatterLandingPage = true, documentLibraryGUID=\"{1}\";";
}
}

Двоичный файл не отображается.

Просмотреть файл

@ -1,444 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.ProviderService
// Author : v-diajme
// Created : 04-06-2015
//
// ***********************************************************************
// <copyright file="BriefcaseContentTypeHelperFunctions.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file provides methods involved in briefcase operations related to content type.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.ProviderService.CommonHelper
{
#region using
using Microsoft.Legal.MatterCenter.DataLayer;
using Microsoft.Legal.MatterCenter.Entity;
using Microsoft.Legal.MatterCenter.Utility;
using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
#endregion
/// <summary>
/// Provide methods involved in briefcase operations related to content type.
/// </summary>
internal static class BriefcaseContentTypeHelperFunctions
{
/// <summary>
/// Returns content type associated with the list.
/// </summary>
/// <param name="list">List object</param>
/// <param name="clientContext">Client Context object</param>
/// <returns>Content type object</returns>
internal static ContentType GetContentType(List list, ClientContext clientContext)
{
ContentType targetDocumentSetContentType = null;
ContentTypeCollection listContentTypes = null;
try
{
listContentTypes = list.ContentTypes;
clientContext.Load(
listContentTypes,
types => types.Include(
type => type.Id,
type => type.Name,
type => type.Parent));
var result = clientContext.LoadQuery(listContentTypes.Where(c => c.Name == ConstantStrings.OneDriveDocumentContentType));
clientContext.ExecuteQuery();
targetDocumentSetContentType = result.FirstOrDefault();
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return targetDocumentSetContentType;
}
/// <summary>
/// Updates the content type of the list item and returns the updated content type based on briefcase operation.
/// </summary>
/// <param name="requestObject">Request object</param>
/// <param name="clientContext">ClientContext object</param>
/// <param name="documentName">Document Name</param>
/// <param name="url">URL parameter</param>
/// <param name="operationType">Specifies the type of operation</param>
/// <param name="contentTypeId">String form of Content type ID</param>
/// <param name="documentLibraryName">Name of the document library</param>
/// <returns>List item Content Type Id</returns>
internal static string ContentTypeByName(RequestObject requestObject, ClientContext clientContext, string documentName, string url, int operationType, string contentTypeId, string documentLibraryName)
{
string response = string.Empty;
try
{
using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(url.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[0]), requestObject.RefreshToken))
{
string itemQuery = string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.GetItemByNameQuery, documentName);
ListItemCollection listItems = Lists.GetData(clientContext, documentLibraryName, itemQuery);
ServiceConstantStrings.OperationTypes type = (ServiceConstantStrings.OperationTypes)operationType;
switch (type)
{
case ServiceConstantStrings.OperationTypes.Update:
foreach (var listitem in listItems)
{
response = Convert.ToString(listitem[ConstantStrings.OneDriveContentTypeProperty], CultureInfo.InvariantCulture);
}
break;
case ServiceConstantStrings.OperationTypes.Checkout:
foreach (var listitem in listItems)
{
listitem[ConstantStrings.OneDriveContentTypeProperty] = contentTypeId;
listitem.Update();
clientContext.ExecuteQuery();
response = ConstantStrings.TRUE;
}
break;
default:
response = string.Concat(ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, TextConstants.InvalidParametersMessage);
break;
}
}
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
response = string.Concat(CultureInfo.InvariantCulture, ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, ServiceUtility.RemoveEscapeCharacter(exception.Message));
}
return response;
}
/// <summary>
/// Gets and sets default content type of the list.
/// </summary>
/// <param name="requestObject">RequestObject object</param>
/// <param name="clientContext">ClientContext object</param>
/// <param name="url">SourceURL of the OneDrive document</param>
/// <param name="contentTypeId">Content Type Id</param>
/// <param name="operationType">Operation type specifies either get or set Content type operation</param>
/// <param name="documentLibraryName">Name of the document library</param>
/// <returns>Returns Content Type Id</returns>
internal static string GetContentTypeList(RequestObject requestObject, ClientContext clientContext, string url, string contentTypeId, int operationType, string documentLibraryName)
{
try
{
using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(url.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[0]), requestObject.RefreshToken))
{
List docLib = clientContext.Web.Lists.GetByTitle(documentLibraryName);
clientContext.Load(docLib);
clientContext.ExecuteQuery();
Microsoft.SharePoint.Client.Folder folder = docLib.RootFolder;
IList<ContentTypeId> list = new List<ContentTypeId>();
clientContext.Load(folder, item => item.ContentTypeOrder, item => item.UniqueContentTypeOrder);
clientContext.ExecuteQuery();
list = folder.ContentTypeOrder;
ServiceConstantStrings.OperationTypes type = (ServiceConstantStrings.OperationTypes)operationType;
switch (type)
{
case ServiceConstantStrings.OperationTypes.Update:
contentTypeId = list[0].StringValue;
break;
case ServiceConstantStrings.OperationTypes.Checkout:
int iterator = 0, index = 0;
for (iterator = 0; iterator < list.Count; iterator++)
{
if (list[iterator].StringValue == contentTypeId)
{
index = iterator;
break;
}
}
ContentTypeId currentContentTypeID = list[index];
list.RemoveAt(index);
list.Insert(0, currentContentTypeID);
folder.UniqueContentTypeOrder = list;
folder.Update();
clientContext.ExecuteQuery();
break;
}
}
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return contentTypeId;
}
/// <summary>
/// Check for the list item named Matter Center Briefcase already exists, if not then only create new folder
/// </summary>
/// <param name="clientContext">SP client context</param>
/// <param name="list">Name of the list</param>
/// <param name="usersMySite">My Site URL of the user</param>
internal static void CreateBriefcaseIfNotExists(ClientContext clientContext, List list, string usersMySite)
{
CamlQuery briefcaseQuery = new CamlQuery();
briefcaseQuery.ViewXml = string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.BriefcaseFolderQuery, ServiceConstantStrings.LegalBriefcaseFolder);
ListItemCollection briefcases = list.GetItems(briefcaseQuery);
clientContext.Load(briefcases, listItems => listItems.Include(item => item.DisplayName));
clientContext.ExecuteQuery();
ListItem listItem = briefcases.Where(item => item.DisplayName == ServiceConstantStrings.LegalBriefcaseFolder).FirstOrDefault();
if (null == listItem) // Check for Matter Center Briefcase folder exists, if not then create
{
ListItemCreationInformation newItem = new ListItemCreationInformation();
newItem.FolderUrl = string.Concat(usersMySite, ServiceConstantStrings.OneDriveDocumentLibraryTitle);
newItem.LeafName = ServiceConstantStrings.LegalBriefcaseFolder;
newItem.UnderlyingObjectType = FileSystemObjectType.Folder;
listItem = list.AddItem(newItem);
listItem.Update();
clientContext.Load(listItem, field => field.DisplayName);
clientContext.ExecuteQuery();
}
}
/// <summary>
/// Sets the content type.
/// </summary>
/// <param name="clientContext">SP client context</param>
/// <param name="list">Name of the list</param>
/// <param name="usersMySite">My Site URL of the user</param>
internal static void SetContentType(ClientContext clientContext, List list, string usersMySite)
{
bool flag = false;
try
{
CreateBriefcaseIfNotExists(clientContext, list, usersMySite);
// Get Matter Center for OneDrive content type
ContentType oneDriveContentType = clientContext.Web.ContentTypes.Where(item => item.Name == ServiceConstantStrings.OneDriveContentTypeName).FirstOrDefault();
if (null != oneDriveContentType)
{
list.ContentTypes.AddExistingContentType(oneDriveContentType); // Associate content type with list (Documents)
list.Update();
clientContext.ExecuteQuery();
}
ContentTypeCollection currentContentTypeOrder = list.ContentTypes;
clientContext.Load(currentContentTypeOrder);
clientContext.ExecuteQuery();
foreach (ContentType contentType in currentContentTypeOrder)
{
if (contentType.Name.Equals(ServiceConstantStrings.OneDriveContentTypeName))
{
flag = true;
}
}
List<string> contentTypes = new List<string>() { ServiceConstantStrings.OneDriveContentTypeName };
if (flag == false)
{
IList<ContentType> contentTypeCollection = SharePointHelper.GetContentTypeData(clientContext, contentTypes);
if (null != contentTypeCollection)
{
ViewCollection views = list.Views;
clientContext.Load(views);
FieldCollection fields = ProvisionHelperFunctions.GetContentType(clientContext, contentTypeCollection, list);
fields.GetByInternalNameOrTitle(ServiceConstantStrings.OneDriveSiteColumn).SetShowInEditForm(false);
fields.GetByInternalNameOrTitle(ServiceConstantStrings.OneDriveSiteColumn).SetShowInNewForm(false);
fields.GetByInternalNameOrTitle(ServiceConstantStrings.OneDriveSiteColumn).Update();
}
}
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
}
/// <summary>
/// Sets default content type for user's OneDrive.
/// </summary>
/// <param name="clientContext">SP client context</param>
/// <param name="list">Name of the list</param>
/// <param name="defaultContentType">Default content type to be set</param>
/// <returns>Content type Id of default content type</returns>
internal static string SetOneDriveDefaultContentType(ClientContext clientContext, List list, string defaultContentType)
{
string defaultContentTypeId = string.Empty;
try
{
ContentTypeCollection currentContentTypeOrder = list.ContentTypes;
clientContext.Load(currentContentTypeOrder);
clientContext.ExecuteQuery();
IList<ContentTypeId> updatedContentTypeOrder = new List<ContentTypeId>();
int count = 0, swap = 0;
foreach (ContentType contentType in currentContentTypeOrder)
{
if (contentType.Name.Equals(defaultContentType))
{
defaultContentTypeId = contentType.StringId;
swap = count;
}
if (!contentType.Name.Equals(ConstantStrings.OneDriveFolderContentType))
{
updatedContentTypeOrder.Add(contentType.Id);
count++;
}
}
ContentTypeId documentContentType = updatedContentTypeOrder[0];
updatedContentTypeOrder[0] = updatedContentTypeOrder[swap];
updatedContentTypeOrder[swap] = documentContentType;
list.RootFolder.UniqueContentTypeOrder = updatedContentTypeOrder;
list.RootFolder.Update();
list.Update();
clientContext.ExecuteQuery();
}
catch (Exception exception)
{
defaultContentTypeId = ConstantStrings.FALSE;
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return defaultContentTypeId;
}
/// <summary>
/// Determines whether the content type exists in the content type group under the specified client context.
/// </summary>
/// <param name="clientContext">Client context</param>
/// <param name="web">Object of site</param>
/// <param name="receivedContentType">Type of the received content</param>
/// <param name="contentTypeGroup">The content type group</param>
/// <param name="siteColumns">List of site columns</param>
internal static bool IsContentTypePresentCheck(ClientContext clientContext, Microsoft.SharePoint.Client.Web web, string receivedContentType, string contentTypeGroup, List<string> siteColumns)
{
bool status = true;
try
{
ContentTypeCollection contentTypeCollection = web.ContentTypes;
clientContext.Load(contentTypeCollection, contentTypes => contentTypes.Include(contentTypeProperties => contentTypeProperties.Group, contentTypeProperties => contentTypeProperties.Name).Where(contentTypeValues => (contentTypeValues.Group == ServiceConstantStrings.OneDriveContentTypeGroup) && (contentTypeValues.Name == ServiceConstantStrings.OneDriveContentTypeName)));
clientContext.ExecuteQuery();
if (0 < contentTypeCollection.Count)
{
FieldCollection fields = contentTypeCollection[0].Fields;
clientContext.Load(fields, field => field.Include(fieldType => fieldType.Title).Where(column => column.Title == ServiceConstantStrings.OneDriveSiteColumn));
clientContext.ExecuteQuery();
if (0 == fields.Count)
{
BriefcaseContentTypeHelperFunctions.AddColumnsToContentType(web, siteColumns, contentTypeCollection[0]);
web.Update();
clientContext.ExecuteQuery();
}
}
else
{
status = BriefcaseContentTypeHelperFunctions.CreateContentType(clientContext, web, siteColumns, receivedContentType, contentTypeGroup);
}
}
catch (Exception exception)
{
status = false;
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return status;
}
/// <summary>
/// Creates site column.
/// </summary>
/// <param name="clientContext">Client Context</param>
/// <param name="web">Object of site</param>
/// <param name="siteColumns">List of site columns</param>
/// <returns>Success or Failure</returns>
internal static bool CreateSiteColumn(ClientContext clientContext, Microsoft.SharePoint.Client.Web web, List<string> siteColumns)
{
bool result = false;
try
{
FieldCollection fieldCol = web.Fields;
clientContext.Load(fieldCol);
clientContext.ExecuteQuery();
List<Field> existingFields = fieldCol.ToList<Field>();
foreach (string columns in siteColumns)
{
Field field = (from fld in existingFields
where fld.Title == columns && fld.TypeAsString == ServiceConstantStrings.OneDriveSiteColumnType
select fld).FirstOrDefault();
if (null == field)
{
web.Fields.AddFieldAsXml(string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.OneDriveSiteColumnSchema, ServiceConstantStrings.OneDriveSiteColumn, ServiceConstantStrings.OneDriveContentTypeGroup), true, AddFieldOptions.DefaultValue);
web.Update();
clientContext.ExecuteQuery();
}
}
result = true;
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
result = false;
}
return result;
}
/// <summary>
/// Creates the type of the content.
/// </summary>
/// <param name="clientContext">The client context.</param>
/// <param name="web">Object of site</param>
/// <param name="siteColumns">The site columns.</param>
/// <param name="contentTypeName">Name of Content Type</param>
internal static bool CreateContentType(ClientContext clientContext, Microsoft.SharePoint.Client.Web web, List<string> siteColumns, string contentTypeName, string contentTypegroup)
{
bool status = true;
ContentType parentContentType = null;
try
{
ContentTypeCollection contentTypeCollection = web.ContentTypes;
clientContext.Load(contentTypeCollection);
clientContext.Load(web.Fields);
clientContext.ExecuteQuery();
parentContentType = (from ct in contentTypeCollection
where ct.Name == ServiceConstantStrings.OneDriveParentContentType
select ct).FirstOrDefault();
ContentTypeCreationInformation contentType = new ContentTypeCreationInformation();
contentType.Name = contentTypeName;
contentType.Group = contentTypegroup;
///// contentType.Id = "0x010100B1ED198475FB3A4AABC59AAAD89B7EAD";
if (parentContentType != null)
{
contentType.ParentContentType = parentContentType;
}
ContentType finalObj = web.ContentTypes.Add(contentType);
AddColumnsToContentType(web, siteColumns, finalObj);
web.Update();
clientContext.ExecuteQuery();
}
catch (Exception exception)
{
status = false;
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return status;
}
/// <summary>
/// Add columns to content type.
/// </summary>
/// <param name="web">Object of site</param>
/// <param name="siteColumns">List of site columns</param>
/// <param name="finalObj">Content type to which columns are to be added</param>
internal static void AddColumnsToContentType(Microsoft.SharePoint.Client.Web web, List<string> siteColumns, ContentType finalObj)
{
try
{
FieldCollection fieldCol = web.Fields;
foreach (string columns in siteColumns)
{
Field customDoc = (from fld in fieldCol
where fld.Title == columns && fld.TypeAsString == ServiceConstantStrings.OneDriveSiteColumnType
select fld).FirstOrDefault();
FieldLinkCreationInformation fieldLinkCreationInfo = new FieldLinkCreationInformation();
fieldLinkCreationInfo.Field = customDoc;
finalObj.FieldLinks.Add(fieldLinkCreationInfo);
}
finalObj.Update(true);
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
}
}
}

Просмотреть файл

@ -1,553 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.ProviderService
// Author : v-akdigh
// Created : 06-19-2014
//
// ***********************************************************************
// <copyright file="BriefcaseHelperFunction.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file provides methods involved in briefcase operations.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.ProviderService.CommonHelper
{
#region using
using Microsoft.Legal.MatterCenter.DataLayer;
using Microsoft.Legal.MatterCenter.Entity;
using Microsoft.Legal.MatterCenter.Utility;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.UserProfiles;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.ServiceModel.Web;
using System.Web.Script.Serialization;
#endregion
/// <summary>
/// Provide methods involved in briefcase operations.
/// </summary>
internal static class BriefcaseHelperFunction
{
/// <summary>
/// Validates the document during briefcase operations. Returns not supported message if the document in operation is not relevant to Matter Center.
/// </summary>
/// <param name="sourceURL">List of File names</param>
/// <returns>Returns response for not supported files</returns>
internal static string GetNotSupportedMessage(List<string> sourceURL)
{
string response = string.Empty;
ResponseDetails responseDetails = new ResponseDetails();
responseDetails.Status = ConstantStrings.FALSE;
responseDetails.FileNames = sourceURL;
response = new JavaScriptSerializer().Serialize(responseDetails);
return response;
}
/// <summary>
/// Fetches the collection of list items satisfying the search criteria.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="itemid">Item Id of the document</param>
/// <returns>ListItemCollection object</returns>
internal static ListItemCollection GetListItemCollection(ClientContext clientContext, int itemid)
{
ListItemCollection listItems = null;
try
{
string briefcaseItemQuery = string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.BriefCaseItemsQuery, itemid);
listItems = Lists.GetData(clientContext, ServiceConstantStrings.OneDriveDocumentLibraryTitle, briefcaseItemQuery);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return listItems;
}
/// <summary>
/// Returns serialized response of the object.
/// </summary>
/// <param name="commonResponse">CommonResponse object</param>
/// <returns>Serialized response of the object</returns>
internal static string GetSerializeResponse(object commonResponse)
{
string result = string.Empty;
try
{
result = new JavaScriptSerializer().Serialize(commonResponse);
}
catch (Exception exception)
{
result = Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return result;
}
/// <summary>
/// Obtains and returns MySite URL of logged-in user.
/// </summary>
/// <param name="requestObject">Request Object</param>
/// <returns>My Site URL of the user</returns>
internal static string GetPersonalURL(RequestObject requestObject)
{
string usersMySite = string.Empty;
string result = string.Empty;
try
{
using (ClientContext clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(ServiceConstantStrings.CentralRepositoryUrl), requestObject.RefreshToken))
{
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetMyProperties();
///// Load users my site URL
clientContext.Load(personProperties, p => p.PersonalUrl);
clientContext.ExecuteQuery();
usersMySite = personProperties.PersonalUrl;
result = usersMySite;
}
}
catch (Exception exception)
{
result = Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return result;
}
/// <summary>
/// Returns a list of source URL based on type of briefcase operation.
/// </summary>
/// <param name="clientContext">Client Context object</param>
/// <param name="syncDetails">SyncDetails object</param>
/// <param name="operationType">Indicates the type of operation to be performed</param>
/// <returns>List of Source URLs</returns>
internal static List<string> CheckSourceURL(ClientContext clientContext, SyncDetails syncDetails, int operationType)
{
List<string> sourceURL = new List<string>();
try
{
foreach (int itemid in syncDetails.ItemId)
{
string briefcaseItemQuery = string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.BriefCaseItemsQuery, itemid);
ListItemCollection listItems = Lists.GetData(clientContext, ServiceConstantStrings.OneDriveDocumentLibraryTitle, briefcaseItemQuery);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
foreach (var listitem in listItems)
{
switch (operationType)
{
case 1:
if (string.IsNullOrEmpty(Convert.ToString(listitem[ServiceConstantStrings.OneDriveSiteColumn], CultureInfo.InvariantCulture)))
{
sourceURL.Add(Convert.ToString(listitem[ServiceConstantStrings.ColumnNameFileLeafRef], CultureInfo.InvariantCulture));
}
break;
case 2:
sourceURL.Add(Convert.ToString(listitem[ServiceConstantStrings.OneDriveSiteColumn], CultureInfo.InvariantCulture));
break;
case 3:
sourceURL.Add(Convert.ToString(listitem[ServiceConstantStrings.ColumnNameFileRef], CultureInfo.InvariantCulture));
break;
}
}
}
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
sourceURL.Add(ServiceUtility.RemoveEscapeCharacter(exception.Message));
}
return sourceURL;
}
/// <summary>
/// Uploads the document to OneDrive (Users MySite document library).
/// </summary>
/// <param name="requestObject">Request Object containing SharePoint App Token</param>
/// <param name="collectionOfAttachments">Collection of documents with data for each document</param>
/// <param name="collectionOfOriginalAttachments">Collection of documents with path of source document</param>
/// <param name="usersMySite">User's My site URL</param>
/// <param name="allAttachmentUrl">Attachment URL.</param>
/// <param name="isOverwrite">Overwrite check</param>
/// <returns>JSON string specifying path of OneDrive as success and false as failure</returns>
internal static string UploadtoBriefcase(RequestObject requestObject, Dictionary<string, Stream> collectionOfAttachments, Dictionary<string, string> collectionOfOriginalAttachments, string usersMySite, string[] allAttachmentUrl, int isOverwrite)
{
string status = ConstantStrings.FALSE;
try
{
using (ClientContext clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(usersMySite), requestObject.RefreshToken))
{
Microsoft.SharePoint.Client.Web web = clientContext.Web;
string contentType = ServiceConstantStrings.OneDriveContentTypeName; // Get Content Type
string contentTypegroup = ServiceConstantStrings.OneDriveContentTypeGroup; // Get Group of Content Type
List<string> siteColumns = new List<string>(new string[] { ServiceConstantStrings.OneDriveSiteColumn });
bool isSiteColumnCreated = BriefcaseContentTypeHelperFunctions.CreateSiteColumn(clientContext, web, siteColumns);
if (isSiteColumnCreated)
{
bool isContentTypeCreated = BriefcaseContentTypeHelperFunctions.IsContentTypePresentCheck(clientContext, web, contentType, contentTypegroup, siteColumns);
if (isContentTypeCreated)
{
List list = web.Lists.GetByTitle(ServiceConstantStrings.OneDriveDocumentLibraryTitle);
string briefcaseFolderQuery = string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.BriefcaseFolderQuery, ServiceConstantStrings.LegalBriefcaseFolder);
ListItemCollection listItems = Lists.GetData(clientContext, ServiceConstantStrings.OneDriveDocumentLibraryTitle, briefcaseFolderQuery);
BriefcaseContentTypeHelperFunctions.SetContentType(clientContext, list, usersMySite);
string defaultContentTypeId = BriefcaseContentTypeHelperFunctions.SetOneDriveDefaultContentType(clientContext, list, contentType);
if (ConstantStrings.FALSE != defaultContentTypeId)
{
web.Update();
if (0 == isOverwrite)
{
MailAttachmentDetails.CheckoutFailedPosition = 0;
status = BriefcaseUtilityHelperFunctions.NewDocumentToOneDrive(clientContext, collectionOfAttachments, collectionOfOriginalAttachments, allAttachmentUrl, web, usersMySite, defaultContentTypeId);
//// Undo check out in case of failure
//// undo checkout all documents from position MailAttachmentDetails.checkOutFailedPosition
BriefcaseHelperFunction.DiscardDocumentCheckout(requestObject, allAttachmentUrl);
}
else
{
MailAttachmentDetails.CheckoutFailedPosition = 0;
status = BriefcaseUtilityHelperFunctions.OverWriteDocument(collectionOfAttachments, collectionOfOriginalAttachments, usersMySite, status, clientContext, web, listItems, defaultContentTypeId);
string[] returnedStatus = status.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture));
if (ConstantStrings.TRUE == returnedStatus[0])
{
BriefcaseHelperFunction.DiscardDocumentCheckout(requestObject, allAttachmentUrl);
}
status = returnedStatus[1];
}
}
else
{
MatterCenterException customException = new MatterCenterException(TextConstants.ErrorCodeAssignDefaultContentType, TextConstants.ErrorMessageAssignDefaultContentType);
throw customException; // Throw will direct to current function's catch block (if present). If not present then it will direct to parent catch block. Parent will be the calling function
}
}
else
{
MatterCenterException customException = new MatterCenterException(TextConstants.ErrorCodeCreateSiteContentType, TextConstants.ErrorMessageCreateSiteContentType);
throw customException; // Throw will direct to current function's catch block (if present). If not present then it will direct to parent catch block. Parent will be the calling function
}
}
else
{
MatterCenterException customException = new MatterCenterException(TextConstants.ErrorCodeCreateSiteColumn, TextConstants.ErrorMessageCreateSiteColumn);
throw customException; // Throw will direct to current function's catch block (if present). If not present then it will direct to parent catch block. Parent will be the calling function
}
}
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
status += ConstantStrings.Semicolon + usersMySite;
}
return status;
}
/// <summary>
/// Uploads the document to matter library.
/// </summary>
/// <param name="requestObject">Request Object containing SharePoint App Token</param>
/// <param name="sourceUrl">URL of the source document</param>
/// <param name="documentStream">Content stream of the document</param>
/// <param name="versionInfo">The version information.</param>
/// <param name="comments">The comments.</param>
/// <param name="retainCheckOut">retain check out option</param>
/// <returns>Content Type List for the Request Object containing SharePoint App Token</returns>
internal static string UploadtoMatter(RequestObject requestObject, string sourceUrl, Stream documentStream, int versionInfo, string comments, bool retainCheckOut)
{
string status = ConstantStrings.FALSE;
string result = ConstantStrings.FALSE;
try
{
if (null != requestObject)
{
ClientContext clientContext;
if (!string.IsNullOrWhiteSpace(sourceUrl) && null != documentStream)
{
string[] sourceUrlParts = sourceUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture));
if (2 == sourceUrlParts.Length)
{
using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(sourceUrlParts[0]), requestObject.RefreshToken))
{
Microsoft.SharePoint.Client.File file = clientContext.Web.GetFileByServerRelativeUrl(sourceUrlParts[1]);
string documentLibraryName = BriefcaseHelperFunction.getLibraryName(clientContext, file);
string contentType = string.Empty;
contentType = BriefcaseContentTypeHelperFunctions.ContentTypeByName(requestObject, clientContext, file.Name, sourceUrl, 1, contentType, documentLibraryName);
string listContentType = BriefcaseContentTypeHelperFunctions.GetContentTypeList(requestObject, clientContext, sourceUrl, contentType, 1, documentLibraryName);
status = BriefcaseContentTypeHelperFunctions.GetContentTypeList(requestObject, clientContext, sourceUrl, contentType, 2, documentLibraryName);
FileSaveBinaryInformation fileSaveBinaryInformation = new FileSaveBinaryInformation();
fileSaveBinaryInformation.ContentStream = documentStream;
file.SaveBinary(fileSaveBinaryInformation);
// Check if file is already checked out
if (file.CheckOutType == CheckOutType.None)
{
file.CheckOut();
}
// Check the type of Check in to be performed
switch (versionInfo)
{
case 0:
file.CheckIn(comments, CheckinType.MinorCheckIn);
break;
case 1:
file.CheckIn(comments, CheckinType.MajorCheckIn);
break;
case 2:
file.CheckIn(comments, CheckinType.OverwriteCheckIn);
break;
}
// Load the Stream data for the file
clientContext.ExecuteQuery();
status = BriefcaseContentTypeHelperFunctions.GetContentTypeList(requestObject, clientContext, sourceUrl, listContentType, 2, documentLibraryName);
// Check whether we need to retain checkout
if (retainCheckOut)
{
file.CheckOut();
clientContext.ExecuteQuery();
}
status = string.Concat(ConstantStrings.TRUE, ConstantStrings.Comma, ConstantStrings.Space, file.ServerRelativeUrl);
}
}
result = status;
}
else
{
status = string.Concat(ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, TextConstants.MissingParametersMessage);
result = status;
}
}
}
catch (Exception exception)
{
status = string.Concat(ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, ServiceUtility.RemoveEscapeCharacter(exception.Message));
result = status;
}
return result;
}
/// <summary>
/// Returns the checkout operation status.
/// </summary>
/// <param name="commonResponse">Common response object</param>
/// <param name="status">Status of the operation</param>
/// <returns>Returns Common response object</returns>
internal static CommonResponse CheckoutOperationStatus(CommonResponse commonResponse, string status)
{
CommonResponse result = null;
try
{
if (ConstantStrings.TRUE == status.Split(ConstantStrings.Comma[0])[0])
{
commonResponse.FileNames.Add(status.Split(ConstantStrings.Comma[0])[1]);
}
else
{
if (ServiceConstantStrings.AlreadyCheckOut == status.Split(ConstantStrings.Comma[0])[1])
{
commonResponse.FileNames.Add(status.Split(ConstantStrings.Comma[0])[1]);
}
else
{
commonResponse.ErrorMessage += status.Split(ConstantStrings.Comma[0])[1];
}
}
result = commonResponse;
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
CommonResponse CheckoutOperationStatusError = new CommonResponse();
result = CheckoutOperationStatusError;
}
return result;
}
/// <summary>
/// Updates the operation status.
/// </summary>
/// <param name="commonResponse">Common response object</param>
/// <param name="status">Status of the operation</param>
/// <returns>Returns Common response object</returns>
internal static CommonResponse UpdateOperationStatus(CommonResponse commonResponse, string status)
{
CommonResponse result = null;
try
{
Dictionary<string, object> responseJson = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(status);
int code = Convert.ToInt32(responseJson[ConstantStrings.ResponseCode], CultureInfo.InvariantCulture);
if (code == 0)
{
commonResponse.Status.Add(true);
}
else
{
commonResponse.Status.Add(false);
commonResponse.ErrorMessage += Convert.ToString(responseJson[ConstantStrings.ResponseValue], CultureInfo.InvariantCulture);
}
result = commonResponse;
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
CommonResponse UpdateOperationStatusError = new CommonResponse();
result = UpdateOperationStatusError;
}
return result;
}
/// <summary>
/// Detaches the operation.
/// </summary>
/// <param name="commonResponse">Common response object</param>
/// <param name="clientContext">Client context object</param>
/// <param name="list">List object</param>
/// <param name="listItems">List item collection object</param>
/// <returns>Returns Common response object</returns>
internal static CommonResponse DetachOperation(CommonResponse commonResponse, ClientContext clientContext, List list, ListItemCollection listItems)
{
CommonResponse detachOperationResponse = new CommonResponse();
try
{
ContentType targetDocumentSetContentType = BriefcaseContentTypeHelperFunctions.GetContentType(list, clientContext);
if (null != targetDocumentSetContentType)
{
foreach (var listItem in listItems)
{
listItem[ServiceConstantStrings.OneDriveSiteColumn] = string.Empty;
listItem[ConstantStrings.OneDriveContentTypeProperty] = Convert.ToString(targetDocumentSetContentType.Id, CultureInfo.InvariantCulture);
listItem.Update();
clientContext.ExecuteQuery();
commonResponse.Status.Add(true);
}
detachOperationResponse = commonResponse;
}
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return detachOperationResponse;
}
/// <summary>
/// Gets the memory stream with specified content.
/// </summary>
/// <param name="fileContent">Error message to be displayed in file</param>
/// <returns>Error file stream with error content</returns>
internal static MemoryStream ReturnErrorFile(string fileContent)
{
MemoryStream result = null;
try
{
byte[] errorMessage = System.Text.Encoding.UTF8.GetBytes(fileContent);
MemoryStream mailFile = new MemoryStream(errorMessage);
mailFile.Position = 0;
WebOperationContext.Current.OutgoingResponse.ContentType = ConstantStrings.MailMediaType;
WebOperationContext.Current.OutgoingResponse.Headers.Add(ConstantStrings.MailContentDispositionHeader);
result = mailFile;
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
MemoryStream ReturnErrorFileError = new MemoryStream();
result = ReturnErrorFileError;
}
return result;
}
/// <summary>
/// Discards checkout from the documents
/// </summary>
/// <param name="requestObject">Request object</param>
/// <param name="allAttachmentUrl">List of attachment URL</param>
/// <returns>Status of discarding check out</returns>
internal static string DiscardDocumentCheckout(RequestObject requestObject, string[] allAttachmentUrl)
{
int currentCount = 0;
string result = ConstantStrings.FALSE;
try
{
foreach (string attachmentUrl in allAttachmentUrl)
{
if (!string.IsNullOrWhiteSpace(attachmentUrl))
{
MailAttachmentDetails sendDocumentUrl = new MailAttachmentDetails();
sendDocumentUrl.FullUrl = attachmentUrl;
if (currentCount >= MailAttachmentDetails.CheckoutFailedPosition)
{
result = DiscardCheckout(requestObject, sendDocumentUrl);
}
}
currentCount++;
}
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
result = string.Concat(ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, ServiceUtility.RemoveEscapeCharacter(exception.Message));
}
return result;
}
/// <summary>
/// Discard individual document from Matter Center
/// </summary>
/// <param name="requestObject">Request object</param>
/// <param name="mailAttachmentDetails">Attachment object</param>
/// <returns>Status of discarding individual document</returns>
internal static string DiscardCheckout(RequestObject requestObject, MailAttachmentDetails mailAttachmentDetails)
{
string result = ConstantStrings.FALSE;
ClientContext clientContext;
try
{
using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(mailAttachmentDetails.FullUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[0]), requestObject.RefreshToken))
{
Microsoft.SharePoint.Client.File file = clientContext.Web.GetFileByServerRelativeUrl(mailAttachmentDetails.FullUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1].TrimEnd(ConstantStrings.Semicolon[0]));
clientContext.Load(file);
clientContext.ExecuteQuery();
if (file.CheckOutType != CheckOutType.None)
{
file.UndoCheckOut();
result = string.Concat(ConstantStrings.TRUE, ConstantStrings.Comma, ConstantStrings.Space, file.Name);
}
clientContext.ExecuteQuery();
}
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
result = string.Concat(ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, ServiceUtility.RemoveEscapeCharacter(exception.Message));
}
return result;
}
/// <summary>
/// Get library title using parent list
/// </summary>
/// <param name="clientContext">Client context object</param>
/// <param name="file">file object of Microsoft.Sharepoint.Client.File</param>
/// <returns>Title of the document library</returns>
internal static string getLibraryName(ClientContext clientContext, Microsoft.SharePoint.Client.File file)
{
string result = String.Empty;
try
{
clientContext.Load(file);
List documentLibrary = file.ListItemAllFields.ParentList;
clientContext.Load(documentLibrary, libraryTitle => libraryTitle.Title);
clientContext.ExecuteQuery();
result = documentLibrary.Title;
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
result = string.Concat(ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, ServiceUtility.RemoveEscapeCharacter(exception.Message));
}
return result;
}
}
}

Просмотреть файл

@ -1,221 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.ProviderService
// Author : v-swmirj
// Created : 04-06-2015
//
// ***********************************************************************
// <copyright file="BriefcaseUtilityHelperFunctions.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file provides utility methods involved in briefcase operations.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.ProviderService.CommonHelper
{
#region using
using Microsoft.Legal.MatterCenter.DataLayer;
using Microsoft.Legal.MatterCenter.Entity;
using Microsoft.Legal.MatterCenter.Utility;
using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
#endregion
/// <summary>
/// Provide utility methods involved in briefcase operations.
/// </summary>
internal static class BriefcaseUtilityHelperFunctions
{
/// <summary>
/// Overwrite document in OneDrive, if already exists (Users MySite Document library).
/// </summary>
/// <param name="collectionOfAttachments">Collection of documents with data for each document</param>
/// <param name="collectionOfOriginalAttachments">Collection of documents with path of source document</param>
/// <param name="usersMySite">User's My site URL</param>
/// <param name="status">Sets status for Overwrite check</param>
/// <param name="clientContext">Client context object for connection between SP & client</param>
/// <param name="web">Object of site</param>
/// <param name="listItems">Object for ListItems Collection</param>
/// <param name="defaultContentTypeId">Id of content type</param>
///<returns>Returns status of operation to calling function</returns>
internal static string OverWriteDocument(Dictionary<string, Stream> collectionOfAttachments, Dictionary<string, string> collectionOfOriginalAttachments, string usersMySite, string status, ClientContext clientContext, Microsoft.SharePoint.Client.Web web, ListItemCollection listItems, string defaultContentTypeId)
{
string fileNameKey = string.Empty;
int documentCount = 0;
try
{
foreach (string key in collectionOfAttachments.Keys)
{
fileNameKey = key.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[0];
foreach (ListItem item in listItems)
{
clientContext.Load(item);
clientContext.ExecuteQuery();
Folder folder = clientContext.Web.GetFolderByServerRelativeUrl(Convert.ToString(item.FieldValues[ServiceConstantStrings.ColumnNameFileRef], CultureInfo.InvariantCulture));
FileCollection files = folder.Files;
clientContext.Load(folder);
clientContext.Load(files);
clientContext.ExecuteQuery();
foreach (Microsoft.SharePoint.Client.File file in files)
{
if (file.Name == fileNameKey)
{
file.DeleteObject();
clientContext.ExecuteQuery();
SendDocumentToOneDrive(web, usersMySite, fileNameKey, collectionOfAttachments[key], collectionOfOriginalAttachments[key], defaultContentTypeId);
break;
}
}
}
documentCount++;
}
clientContext.ExecuteQuery();
status = string.Concat(usersMySite, ServiceConstantStrings.OneDriveDocumentLibraryTitle, ConstantStrings.Semicolon, documentCount, ConstantStrings.Semicolon, collectionOfAttachments.Count);
}
catch (Exception exception)
{
status = ConstantStrings.TRUE + ConstantStrings.DOLLAR + Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return status;
}
/// <summary>
/// Sends document to user's OneDrive.
/// </summary>
/// <param name="web">Object of site</param>
/// <param name="usersMySite">User's My site URL</param>
/// <param name="key">Key parameter</param>
/// <param name="collectionOfAttachments">Attachments Collection</param>
/// <param name="collectionOfOriginalAttachments">Original attachments collection</param>
/// <param name="contentTypeId">Content type id of default content type</param>
internal static void SendDocumentToOneDrive(Microsoft.SharePoint.Client.Web web, string usersMySite, string key, Stream collectionOfAttachments, string collectionOfOriginalAttachments, string contentTypeId)
{
try
{
Microsoft.SharePoint.Client.File file = web.GetFolderByServerRelativeUrl(string.Concat(usersMySite, ServiceConstantStrings.OneDriveDocumentLibraryTitle, ConstantStrings.ForwardSlash, ServiceConstantStrings.LegalBriefcaseFolder)).Files.Add(new FileCreationInformation()
{
Url = key,
Overwrite = true,
ContentStream = collectionOfAttachments
});
file.ListItemAllFields.ParseAndSetFieldValue(ServiceConstantStrings.OneDriveSiteColumn, collectionOfOriginalAttachments);
file.ListItemAllFields[ConstantStrings.OneDriveContentTypeProperty] = contentTypeId;
file.ListItemAllFields.Update();
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
}
/// <summary>
/// Sends new documents to user's OneDrive.
/// </summary>
/// <param name="clientContext">SP client context</param>
/// <param name="collectionOfAttachments">Dictionary object containing attachment URLs and their stream data</param>
/// <param name="collectionOfOriginalAttachments">Dictionary object containing attachment URLs</param>
/// <param name="allAttachmentUrl">A string array containing all the attachment URLs</param>
/// <param name="web">Object of site</param>
/// <param name="usersMySite">My Site URL of the user</param>
/// <param name="defaultContentTypeId">Default content type Id</param>
/// <returns>JSON string specifying success or failure for new documents and URL of the files that already exist in the user's OneDrive</returns>
internal static string NewDocumentToOneDrive(ClientContext clientContext, Dictionary<string, Stream> collectionOfAttachments, Dictionary<string, string> collectionOfOriginalAttachments, string[] allAttachmentUrl, Microsoft.SharePoint.Client.Web web, string usersMySite, string defaultContentTypeId)
{
string status = ConstantStrings.FALSE,
legalBriefcaseFolderQuery = string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.BriefcaseFolderContentsQuery, ServiceConstantStrings.LegalBriefcaseFolder);
try
{
ListItemCollection listItemsColl = Lists.GetData(clientContext, ServiceConstantStrings.OneDriveDocumentLibraryTitle, legalBriefcaseFolderQuery);
clientContext.Load(
listItemsColl,
items => items.Include(
item => item.DisplayName,
item => item.FileSystemObjectType,
item => item.Folder.Files.Include(
files => files.Name)));
clientContext.ExecuteQuery();
status = SendNewDocumentToOneDrive(clientContext, listItemsColl, collectionOfAttachments, collectionOfOriginalAttachments, allAttachmentUrl, web, usersMySite, defaultContentTypeId);
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return status;
}
/// <summary>
/// Send new documents to user's OneDrive.
/// </summary>
/// <param name="clientContext">SP client context</param>
/// <param name="listItemsColl">List item collection of Legal Briefcase folder</param>
/// <param name="collectionOfAttachments">Dictionary object containing attachment URLs and their stream data</param>
/// <param name="collectionOfOriginalAttachments">Dictionary object containing attachment URLs</param>
/// <param name="allAttachmentUrl">A string array containing all the attachment URLs</param>
/// <param name="web">Object of site</param>
/// <param name="usersMySite">My Site URL of the user</param>
/// <param name="defaultContentTypeId">Default content type Id</param>
/// <returns>JSON string specifying success or failure for new documents and URL of the files that already exist in the user's OneDrive</returns>
internal static string SendNewDocumentToOneDrive(ClientContext clientContext, ListItemCollection listItemsColl, Dictionary<string, Stream> collectionOfAttachments, Dictionary<string, string> collectionOfOriginalAttachments, string[] allAttachmentUrl, Microsoft.SharePoint.Client.Web web, string usersMySite, string defaultContentTypeId)
{
string status = ConstantStrings.FALSE;
string result = string.Empty;
try
{
status = SendIndividualDocument(clientContext, collectionOfAttachments, listItemsColl, allAttachmentUrl, web, usersMySite, collectionOfOriginalAttachments, defaultContentTypeId, status);
result = status;
}
catch (Exception exception)
{
result = Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
return result;
}
/// <summary>
/// Sends individual document to OneDrive
/// </summary>
/// <param name="clientContext">SP client context</param>
/// <param name="collectionOfAttachments">Dictionary object containing attachment URLs and their stream data</param>
/// <param name="listItemsColl">List item collection of Legal Briefcase folder</param>
/// <param name="allAttachmentUrl">A string array containing all the attachment URLs</param>
/// <param name="web">Object of site</param>
/// <param name="usersMySite">My Site URL of the user</param>
/// <param name="collectionOfOriginalAttachments">Dictionary object containing attachment URLs</param>
/// <param name="defaultContentTypeId">Default content type Id</param>
/// <param name="status">Status of documents sent to OneDrive</param>
/// <returns>Status of documents sent to OneDrive</returns>
internal static string SendIndividualDocument(ClientContext clientContext, Dictionary<string, Stream> collectionOfAttachments, ListItemCollection listItemsColl, string[] allAttachmentUrl, Microsoft.SharePoint.Client.Web web, string usersMySite, Dictionary<string, string> collectionOfOriginalAttachments, string defaultContentTypeId, string status)
{
int documentCount = 0, count = 0;
string fileNameKey = string.Empty;
string overwriteDocumentURLs = string.Empty;
foreach (string key in collectionOfAttachments.Keys)
{
fileNameKey = key.Split(new string[] { ConstantStrings.DOLLAR }, StringSplitOptions.RemoveEmptyEntries)[0];
var selectedItems = from li in listItemsColl.Cast<ListItem>()
from files in li.Folder.Files
where files.Name.ToUpperInvariant() == fileNameKey.ToUpperInvariant()
select files;
if (selectedItems.FirstOrDefault() != null)
{
overwriteDocumentURLs += allAttachmentUrl[count] + ConstantStrings.Semicolon;
}
else
{
SendDocumentToOneDrive(web, usersMySite, fileNameKey, collectionOfAttachments[key], collectionOfOriginalAttachments[key], defaultContentTypeId);
documentCount++;
}
count++;
web.Update();
clientContext.ExecuteQuery();
MailAttachmentDetails.CheckoutFailedPosition++;
status = string.Concat(usersMySite, ServiceConstantStrings.OneDriveDocumentLibraryTitle, ConstantStrings.Semicolon, documentCount, ConstantStrings.Semicolon, collectionOfAttachments.Count, ConstantStrings.Semicolon, overwriteDocumentURLs);
}
return status;
}
}
}

Просмотреть файл

@ -1,872 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.ProviderService
// Author : v-akvira
// Created : 29-01-2015
//
// ***********************************************************************
// <copyright file="EditMatterHelperFunctions.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file provides helper methods to update matter properties.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.ProviderService.HelperClasses
{
#region using
using Microsoft.Legal.MatterCenter.DataLayer;
using Microsoft.Legal.MatterCenter.Entity;
using Microsoft.Legal.MatterCenter.Utility;
using Microsoft.Security.Application;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Utilities;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
#endregion
/// <summary>
/// Provides helper methods to update matter properties.
/// </summary>
internal static class EditMatterHelperFunctions
{
/// <summary>
/// Checks if the property exists in property bag. Returns the value for the property from property bag.
/// </summary>
/// <param name="stampedPropertyValues">Dictionary object containing matter property bag key/value pairs</param>
/// <param name="key">Key to check in dictionary</param>
/// <returns>Property bag value for </returns>
internal static string GetStampPropertyValue(Dictionary<string, object> stampedPropertyValues, string key)
{
string result = string.Empty;
if (stampedPropertyValues.ContainsKey(key))
{
result = System.Web.HttpUtility.HtmlDecode(Convert.ToString(stampedPropertyValues[key], CultureInfo.InvariantCulture));
}
// This is just to check for null value in key, if exists
return (!string.IsNullOrWhiteSpace(result)) ? result : string.Empty;
}
/// <summary>
/// Retrieves the users assigned to matter.
/// </summary>
/// <param name="matterCenterUsers">Users tagged with matter in property bag</param>
/// <returns>Users assigned to matter</returns>
internal static List<List<string>> GetMatterAssignedUsers(string matterCenterUsers)
{
List<List<string>> matterCenterUserCollection = new List<List<string>>();
if (!string.IsNullOrWhiteSpace(matterCenterUsers))
{
List<string> userCollection = matterCenterUsers.Split(new string[] { ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (string userRow in userCollection)
{
List<string> users = userRow.Split(new string[] { ConstantStrings.Semicolon }, StringSplitOptions.RemoveEmptyEntries).ToList();
matterCenterUserCollection.Add(users);
}
}
return matterCenterUserCollection;
}
/// <summary>
/// Extracts matter details from matter library property bag.
/// </summary>
/// <param name="stampedPropertyValues">Dictionary object containing matter property bag key/value pairs</param>
/// <returns>Matter details from matter library property bag</returns>
internal static MatterDetails ExtractMatterDetails(Dictionary<string, object> stampedPropertyValues)
{
MatterDetails matterDetails = new MatterDetails()
{
PracticeGroup = GetStampPropertyValue(stampedPropertyValues, ServiceConstantStrings.StampedPropertyPracticeGroup),
AreaOfLaw = GetStampPropertyValue(stampedPropertyValues, ServiceConstantStrings.StampedPropertyAreaOfLaw),
SubareaOfLaw = GetStampPropertyValue(stampedPropertyValues, ServiceConstantStrings.StampedPropertySubAreaOfLaw),
ResponsibleAttorney = GetStampPropertyValue(stampedPropertyValues, ServiceConstantStrings.StampedPropertyResponsibleAttorney),
TeamMembers = GetStampPropertyValue(stampedPropertyValues, ServiceConstantStrings.StampedPropertyTeamMembers),
UploadBlockedUsers = GetStampPropertyValue(stampedPropertyValues, ServiceConstantStrings.StampedPropertyBlockedUploadUsers).Split(new string[] { ConstantStrings.Semicolon }, StringSplitOptions.RemoveEmptyEntries).ToList()
};
return matterDetails;
}
/// <summary>
/// Fetches matter library stamped properties.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="libraryName">Library name</param>
/// <returns>Stamped properties</returns>
internal static PropertyValues FetchMatterStampedProperties(ClientContext clientContext, string libraryName)
{
PropertyValues stampedProperties = null;
try
{
if (null != clientContext && !string.IsNullOrWhiteSpace(libraryName))
{
stampedProperties = clientContext.Web.Lists.GetByTitle(libraryName).RootFolder.Properties;
clientContext.Load(stampedProperties);
clientContext.ExecuteQuery();
}
}
catch (Exception)
{
throw; //// This will transfer control to catch block of parent function.
}
return stampedProperties;
}
/// <summary>
/// Updates the matter stamped properties with new details for user permissions.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="matterDetails">MatterDetails object</param>
/// <param name="matter">Matter object</param>
/// <param name="matterStampedProperties">Matter stamped properties</param>
/// <param name="isEditMode">Page opened in edit mode</param>
/// <returns>Status of operation</returns>
internal static string UpdateMatterStampedProperties(ClientContext clientContext, MatterDetails matterDetails, Matter matter, PropertyValues matterStampedProperties, bool isEditMode)
{
string result = ConstantStrings.FALSE;
try
{
if (null != clientContext && null != matter && null != matterDetails && (0 < matterStampedProperties.FieldValues.Count))
{
Dictionary<string, string> propertyList = new Dictionary<string, string>();
// Get existing stamped properties
string stampedUsers = GetStampPropertyValue(matterStampedProperties.FieldValues, ServiceConstantStrings.StampedPropertyMatterCenterUsers);
string stampedUserEmails = GetStampPropertyValue(matterStampedProperties.FieldValues, ServiceConstantStrings.StampedPropertyMatterCenterUserEmails);
string stampedPermissions = GetStampPropertyValue(matterStampedProperties.FieldValues, ServiceConstantStrings.StampedPropertyMatterCenterPermissions);
string stampedRoles = GetStampPropertyValue(matterStampedProperties.FieldValues, ServiceConstantStrings.StampedPropertyMatterCenterRoles);
string stampedResponsibleAttorneys = GetStampPropertyValue(matterStampedProperties.FieldValues, ServiceConstantStrings.StampedPropertyResponsibleAttorney);
string stampedResponsibleAttorneysEmail = GetStampPropertyValue(matterStampedProperties.FieldValues, ServiceConstantStrings.StampedPropertyResponsibleAttorneyEmail);
string stampedTeamMembers = GetStampPropertyValue(matterStampedProperties.FieldValues, ServiceConstantStrings.StampedPropertyTeamMembers);
string stampedBlockedUploadUsers = GetStampPropertyValue(matterStampedProperties.FieldValues, ServiceConstantStrings.StampedPropertyBlockedUploadUsers);
string currentPermissions = string.Join(ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR, matter.Permissions.Where(user => !string.IsNullOrWhiteSpace(user)));
string currentRoles = string.Join(ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR, matter.Roles.Where(user => !string.IsNullOrWhiteSpace(user)));
string currentBlockedUploadUsers = string.Join(ConstantStrings.Semicolon, matterDetails.UploadBlockedUsers.Where(user => !string.IsNullOrWhiteSpace(user)));
string currentUsers = GetMatterAssignedUsers(matter);
string currentUserEmails = GetMatterAssignedUsersEmail(clientContext, matter);
string finalMatterPermissions = string.IsNullOrWhiteSpace(stampedPermissions) || isEditMode ? currentPermissions : string.Concat(stampedPermissions, ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR, currentPermissions);
string finalMatterRoles = string.IsNullOrWhiteSpace(stampedRoles) || isEditMode ? currentRoles : string.Concat(stampedRoles, ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR, currentRoles);
string finalResponsibleAttorneys = string.IsNullOrWhiteSpace(stampedResponsibleAttorneys) || isEditMode ? matterDetails.ResponsibleAttorney : string.Concat(stampedResponsibleAttorneys, ConstantStrings.Semicolon, matterDetails.ResponsibleAttorney);
string finalResponsibleAttorneysEmail = string.IsNullOrWhiteSpace(stampedResponsibleAttorneysEmail) || isEditMode ? matterDetails.ResponsibleAttorneyEmail : string.Concat(stampedResponsibleAttorneysEmail, ConstantStrings.Semicolon, matterDetails.ResponsibleAttorneyEmail);
string finalTeamMembers = string.IsNullOrWhiteSpace(stampedTeamMembers) || isEditMode ? matterDetails.TeamMembers : string.Concat(stampedTeamMembers, ConstantStrings.Semicolon, matterDetails.TeamMembers);
string finalMatterCenterUsers = string.IsNullOrWhiteSpace(stampedUsers) || isEditMode ? currentUsers : string.Concat(stampedUsers, ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR, currentUsers);
string finalMatterCenterUserEmails = string.IsNullOrWhiteSpace(stampedUserEmails) || isEditMode ? currentUserEmails : string.Concat(stampedUserEmails, ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR, currentUserEmails);
string finalBlockedUploadUsers = string.IsNullOrWhiteSpace(stampedBlockedUploadUsers) || isEditMode ? currentBlockedUploadUsers : string.Concat(stampedBlockedUploadUsers, ConstantStrings.Semicolon, currentBlockedUploadUsers);
propertyList.Add(ServiceConstantStrings.StampedPropertyResponsibleAttorney, Encoder.HtmlEncode(finalResponsibleAttorneys));
propertyList.Add(ServiceConstantStrings.StampedPropertyResponsibleAttorneyEmail, Encoder.HtmlEncode(finalResponsibleAttorneysEmail));
propertyList.Add(ServiceConstantStrings.StampedPropertyTeamMembers, Encoder.HtmlEncode(finalTeamMembers));
propertyList.Add(ServiceConstantStrings.StampedPropertyBlockedUploadUsers, Encoder.HtmlEncode(finalBlockedUploadUsers));
propertyList.Add(ServiceConstantStrings.StampedPropertyMatterCenterRoles, Encoder.HtmlEncode(finalMatterRoles));
propertyList.Add(ServiceConstantStrings.StampedPropertyMatterCenterPermissions, Encoder.HtmlEncode(finalMatterPermissions));
propertyList.Add(ServiceConstantStrings.StampedPropertyMatterCenterUsers, Encoder.HtmlEncode(finalMatterCenterUsers));
propertyList.Add(ServiceConstantStrings.StampedPropertyMatterCenterUserEmails, Encoder.HtmlEncode(finalMatterCenterUserEmails));
Lists.SetPropertBagValuesForList(clientContext, matterStampedProperties, matter.Name, propertyList);
result = ConstantStrings.TRUE;
}
}
catch (Exception)
{
throw; //// This will transfer control to catch block of parent function.
}
return result;
}
/// <summary>
/// Converts the matter users in a form that can be stamped to library.
/// </summary>
/// <param name="matter">Matter object</param>
/// <returns>Users that can be stamped</returns>
private static string GetMatterAssignedUsers(Matter matter)
{
string currentUsers = string.Empty;
string separator = string.Empty;
if (null != matter && 0 < matter.AssignUserNames.Count)
{
foreach (IList<string> userNames in matter.AssignUserNames)
{
currentUsers += separator + string.Join(ConstantStrings.Semicolon, userNames.Where(user => !string.IsNullOrWhiteSpace(user)));
separator = ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR;
}
}
return currentUsers;
}
/// <summary>
/// Converts the project users emails in a form that can be stamped to library.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="matter">Matter object</param>
/// <returns>Users that can be stamped</returns>
private static string GetMatterAssignedUsersEmail(ClientContext clientContext, Matter matter)
{
string currentUsers = string.Empty;
string separator = string.Empty;
if (null != matter && 0 < matter.AssignUserEmails.Count)
{
foreach (IList<string> userNames in matter.AssignUserEmails)
{
List<string> userEmails = new List<string>();
if (null != clientContext && null != userNames)
{
foreach (string userName in userNames)
{
if (!string.IsNullOrWhiteSpace(userName))
{
if (ValidationHelperFunctions.ValidateExternalUserInput(userName))
{
userEmails.Add(userName);
}
else
{
User user = clientContext.Web.EnsureUser(userName.Trim());
///// Only Fetch the User ID which is required
clientContext.Load(user, u => u.Email);
clientContext.ExecuteQuery();
///// Add the user to the first element of the FieldUserValue array.
userEmails.Add(user.Email);
}
}
}
currentUsers += separator + string.Join(ConstantStrings.Semicolon, userEmails);
separator = ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR;
}
}
}
return currentUsers;
}
/// <summary>
/// Fetches the effective permissions of users present in matter library.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="matterLibrary">Matter library name</param>
/// <returns>List permissions</returns>
internal static IEnumerable<RoleAssignment> FetchUserPermission(ClientContext clientContext, string matterLibrary)
{
IEnumerable<RoleAssignment> userPermissionCollection = null;
try
{
if (null != clientContext && !string.IsNullOrWhiteSpace(matterLibrary))
{
List list = clientContext.Web.Lists.GetByTitle(matterLibrary);
userPermissionCollection = clientContext.LoadQuery(list.RoleAssignments.Include(listRoleAssignment => listRoleAssignment.PrincipalId, listRoleAssignment => listRoleAssignment.Member, listRoleAssignment => listRoleAssignment.Member.Title, listRoleAssignment => listRoleAssignment.Member.PrincipalType, listRoleAssignment => listRoleAssignment.RoleDefinitionBindings.Include(userRoles => userRoles.BasePermissions, userRoles => userRoles.Name, userRoles => userRoles.Id)).Where(listUsers => (PrincipalType.User == listUsers.Member.PrincipalType) || (PrincipalType.SecurityGroup == listUsers.Member.PrincipalType)));
clientContext.ExecuteQuery();
}
}
catch (Exception)
{
throw; //// This will transfer control to catch block of parent function.
}
return userPermissionCollection;
}
/// <summary>
/// Remove old users and assign permissions to new users.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="matter">Matter object</param>
/// <param name="users">List of users to remove</param>
/// <param name="loggedInUserTitle">Title of logged-in user</param>
/// <param name="isListItem">ListItem or list</param>
/// <param name="listName">List Name</param>
/// <param name="matterLandingPageId">List item id</param>
/// <param name="isEditMode">Add/ Edit mode</param>
/// <returns></returns>
internal static string UpdatePermission(ClientContext clientContext, Matter matter, List<string> users, string loggedInUserTitle, bool isListItem, string listName, int matterLandingPageId, bool isEditMode)
{
bool result = false;
try
{
if (null != clientContext && !string.IsNullOrWhiteSpace(listName))
{
if (isEditMode)
{
RemoveSpecificUsers(clientContext, users, loggedInUserTitle, isListItem, listName, matterLandingPageId);
}
// Add permission
if (!isListItem)
{
result = Lists.SetPermission(clientContext, matter.AssignUserEmails, matter.Permissions, listName);
}
else
{
if (0 <= matterLandingPageId)
{
result = Lists.SetItemPermission(clientContext, matter.AssignUserEmails, ServiceConstantStrings.MatterLandingPageRepositoryName, matterLandingPageId, matter.Permissions);
}
}
}
}
catch (Exception)
{
throw;
}
// To avoid the invalid symbol error while parsing the JSON, return the response in lower case
return Convert.ToString(result, CultureInfo.CurrentCulture).ToLower(CultureInfo.CurrentCulture);
}
/// <summary>
/// Removes the users' permission from list or list item.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="usersToRemove">List of users</param>
/// <param name="loggedInUserTitle">Title of logged-in user</param>
/// <param name="isListItem">ListItem or list</param>
/// <param name="listName">Name of the List</param>
/// <param name="matterLandingPageId">List item id</param>
private static void RemoveSpecificUsers(ClientContext clientContext, List<string> usersToRemove, string loggedInUserTitle, bool isListItem, string listName, int matterLandingPageId)
{
try
{
ListItem listItem = null;
RoleAssignmentCollection roleCollection = null;
Microsoft.SharePoint.Client.Web web = clientContext.Web;
List list = web.Lists.GetByTitle(listName);
clientContext.Load(list);
clientContext.ExecuteQuery();
if (0 < usersToRemove.Count)
{
if (isListItem)
{
// Fetch the list item
if (0 <= matterLandingPageId)
{
listItem = list.GetItemById(matterLandingPageId);
clientContext.Load(listItem, listItemProperties => listItemProperties.RoleAssignments.Include(roleAssignmentProperties => roleAssignmentProperties.Member, roleAssignmentProperties => roleAssignmentProperties.Member.Title, roleAssignmentProperties => roleAssignmentProperties.RoleDefinitionBindings.Include(roleDef => roleDef.Name, roleDef => roleDef.BasePermissions)).Where(listUsers => (PrincipalType.User == listUsers.Member.PrincipalType) || (PrincipalType.SecurityGroup == listUsers.Member.PrincipalType || (PrincipalType.SharePointGroup == listUsers.Member.PrincipalType))));
clientContext.ExecuteQuery();
roleCollection = listItem.RoleAssignments;
}
}
else
{
clientContext.Load(list, listProperties => listProperties.RoleAssignments.Include(roleAssignmentProperties => roleAssignmentProperties.Member, roleAssignmentProperties => roleAssignmentProperties.Member.Title, roleAssignmentProperties => roleAssignmentProperties.RoleDefinitionBindings.Include(roleDef => roleDef.Name, roleDef => roleDef.BasePermissions)).Where(listUsers => (PrincipalType.User == listUsers.Member.PrincipalType) || (PrincipalType.SecurityGroup == listUsers.Member.PrincipalType) || (PrincipalType.SharePointGroup == listUsers.Member.PrincipalType)));
clientContext.ExecuteQuery();
roleCollection = list.RoleAssignments;
}
if (null != roleCollection && 0 < roleCollection.Count && 0 < usersToRemove.Count)
{
foreach (string user in usersToRemove)
{
foreach (RoleAssignment role in roleCollection)
{
List<RoleDefinition> roleDefinationList = new List<RoleDefinition>();
foreach (RoleDefinition roleDef in role.RoleDefinitionBindings)
{
// Removing permission for all the user except current user with full control
// Add those users in list, then traverse the list and removing all users from that list
if (PrincipalType.SharePointGroup == role.Member.PrincipalType)
{
roleDefinationList.Add(roleDef);
}
else
{
string email = ((User)role.Member).Email;
if (email == user && !((email == loggedInUserTitle) && (roleDef.Name == ConstantStrings.EditMatterAllowedPermissionLevel)))
{
roleDefinationList.Add(roleDef);
}
}
}
foreach (RoleDefinition roleDef in roleDefinationList)
{
role.RoleDefinitionBindings.Remove(roleDef);
}
role.Update();
}
}
}
clientContext.ExecuteQuery();
}
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// Gets the display name of users having permission on library.
/// </summary>
/// <param name="userPermissionOnLibrary">Users having permission on library</param>
/// <returns></returns>
internal static List<string> RetrieveMatterUsers(IEnumerable<RoleAssignment> userPermissionOnLibrary)
{
List<string> users = new List<string>();
try
{
if (null != userPermissionOnLibrary && 0 < userPermissionOnLibrary.Count())
{
foreach (RoleAssignment roles in userPermissionOnLibrary)
{
users.Add(((User)roles.Member).Email);
}
}
}
catch (Exception)
{
throw;
}
return users;
}
/// <summary>
/// Reverts the permission of users from matter, OneNote, Calendar libraries and matter landing page
/// </summary>
/// <param name="requestObject">Request object</param>
/// <param name="client">Client object</param>
/// <param name="matter">Matter object</param>
/// <param name="clientContext">ClientContext object</param>
/// <param name="matterRevertListObject">MatterRevertObjectList object</param>
/// <param name="loggedInUserTitle">Logged-in user title</param>
/// <param name="oldUserPermissions">Old library users</param>
/// <param name="matterLandingPageId">List item id</param>
/// <param name="isEditMode">Add/ Edit mode</param>
/// <returns>Status of operation</returns>
internal static string RevertMatterUpdates(RequestObject requestObject, Client client, Matter matter, ClientContext clientContext, MatterRevertList matterRevertListObject, string loggedInUserTitle, IEnumerable<RoleAssignment> oldUserPermissions, int matterLandingPageId, bool isEditMode)
{
bool result = false;
try
{
if (null != requestObject && null != client && null != matter && null != clientContext && null != matterRevertListObject)
{
List<string> users = new List<string>();
users = matter.AssignUserEmails.SelectMany(user => user).Distinct().ToList();
// Remove recently added users
if (null != matterRevertListObject.MatterLibrary)
{
RemoveSpecificUsers(clientContext, users, loggedInUserTitle, false, matterRevertListObject.MatterLibrary, -1);
}
if (null != matterRevertListObject.MatterCalendar)
{
RemoveSpecificUsers(clientContext, users, loggedInUserTitle, false, matterRevertListObject.MatterCalendar, -1);
}
if (null != matterRevertListObject.MatterOneNoteLibrary)
{
RemoveSpecificUsers(clientContext, users, loggedInUserTitle, false, matterRevertListObject.MatterOneNoteLibrary, -1);
}
if (null != matterRevertListObject.MatterTask)
{
RemoveSpecificUsers(clientContext, users, loggedInUserTitle, false, matterRevertListObject.MatterTask, -1);
}
if (null != matterRevertListObject.MatterSitePages)
{
RemoveSpecificUsers(clientContext, users, loggedInUserTitle, true, matterRevertListObject.MatterSitePages, matterLandingPageId);
}
if (isEditMode)
{
Matter matterRevertUserPermission = PrepareUserPermission(oldUserPermissions);
if (null != matterRevertListObject.MatterLibrary)
{
result = Lists.SetPermission(clientContext, matterRevertUserPermission.AssignUserEmails, matterRevertUserPermission.Permissions, matterRevertListObject.MatterLibrary);
}
if (null != matterRevertListObject.MatterOneNoteLibrary)
{
result = Lists.SetPermission(clientContext, matterRevertUserPermission.AssignUserEmails, matterRevertUserPermission.Permissions, matterRevertListObject.MatterOneNoteLibrary);
}
if (null != matterRevertListObject.MatterCalendar)
{
result = Lists.SetPermission(clientContext, matterRevertUserPermission.AssignUserEmails, matterRevertUserPermission.Permissions, matterRevertListObject.MatterCalendar);
}
if (null != matterRevertListObject.MatterTask)
{
result = Lists.SetPermission(clientContext, matterRevertUserPermission.AssignUserEmails, matterRevertUserPermission.Permissions, matterRevertListObject.MatterTask);
}
if (null != matterRevertListObject.MatterSitePages && 0 <= matterLandingPageId)
{
result = Lists.SetItemPermission(clientContext, matterRevertUserPermission.AssignUserEmails, ServiceConstantStrings.MatterLandingPageRepositoryName, matterLandingPageId, matterRevertUserPermission.Permissions);
}
}
}
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
}
// To avoid the invalid symbol error while parsing the JSON, return the response in lower case
return Convert.ToString(result, CultureInfo.CurrentCulture).ToLower(CultureInfo.CurrentUICulture);
}
/// <summary>
/// Fetches the users to remove permission.
/// </summary>
/// <param name="userPermissions">Users having permission on library</param>
/// <returns>Matter object containing user name and permissions</returns>
internal static Matter PrepareUserPermission(IEnumerable<RoleAssignment> userPermissions)
{
Matter matterUserPermission = new Matter();
matterUserPermission.AssignUserEmails = new List<IList<string>>();
matterUserPermission.Permissions = new List<string>();
if (null != userPermissions && 0 < userPermissions.Count())
{
foreach (RoleAssignment userPermission in userPermissions)
{
foreach (RoleDefinition roleDefinition in userPermission.RoleDefinitionBindings)
{
matterUserPermission.AssignUserEmails.Add(new List<string> { ((User)userPermission.Member).Email });
matterUserPermission.Permissions.Add(roleDefinition.Name);
}
}
}
return matterUserPermission;
}
/// <summary>
/// Checks if security group exists in team members list.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="matter">Matter object</param>
/// <returns>Security group existence</returns>
internal static string CheckSecurityGroupInTeamMembers(ClientContext clientContext, Matter matter, IList<string> userId)
{
string result = ConstantStrings.TRUE;
int teamMembersRowCount, securityGroupRowNumber = -1; // Blocked user field has security group
List<Tuple<int, Principal>> teamMemberPrincipalCollection = new List<Tuple<int, Principal>>();
if (null != clientContext && null != matter && null != matter.AssignUserEmails && null != matter.BlockUserNames)
{
try
{
teamMembersRowCount = matter.AssignUserEmails.Count;
List<string> blockedUsers = matter.BlockUserNames.Where(user => !string.IsNullOrWhiteSpace(user.Trim())).ToList();
if (0 < teamMembersRowCount)
{
securityGroupRowNumber = -2; // Invalid user
for (int iterator = 0; iterator < teamMembersRowCount; iterator++)
{
List<string> currentRowTeamMembers = matter.AssignUserEmails[iterator].Where(user => !string.IsNullOrWhiteSpace(user.Trim())).ToList();
foreach (string teamMember in currentRowTeamMembers)
{
Principal teamMemberPrincipal = clientContext.Web.EnsureUser(teamMember);
clientContext.Load(teamMemberPrincipal, teamMemberPrincipalProperties => teamMemberPrincipalProperties.PrincipalType, teamMemberPrincipalProperties => teamMemberPrincipalProperties.Title);
teamMemberPrincipalCollection.Add(new Tuple<int, Principal>(iterator, teamMemberPrincipal));
}
}
}
if (0 < blockedUsers.Count)
{
foreach (string blockedUser in blockedUsers)
{
Principal teamMemberPrincipal = clientContext.Web.EnsureUser(blockedUser);
clientContext.Load(teamMemberPrincipal, teamMemberPrincipalProperties => teamMemberPrincipalProperties.PrincipalType, teamMemberPrincipalProperties => teamMemberPrincipalProperties.Title);
teamMemberPrincipalCollection.Add(new Tuple<int, Principal>(-1, teamMemberPrincipal));
}
}
clientContext.ExecuteQuery();
foreach (Tuple<int, Principal> teamMemberPrincipal in teamMemberPrincipalCollection)
{
Principal currentTeamMemberPrincipal = teamMemberPrincipal.Item2;
if (currentTeamMemberPrincipal.PrincipalType == PrincipalType.SecurityGroup)
{
securityGroupRowNumber = teamMemberPrincipal.Item1;
result = string.Format(CultureInfo.InvariantCulture, ConstantStrings.ServiceResponse, ServiceConstantStrings.ErrorCodeSecurityGroupExists, ServiceConstantStrings.ErrorMessageSecurityGroupExists + ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR + userId[securityGroupRowNumber]);
break;
}
}
}
catch (Exception)
{
result = string.Format(CultureInfo.InvariantCulture, ConstantStrings.ServiceResponse, ServiceConstantStrings.IncorrectTeamMembersCode, ServiceConstantStrings.IncorrectTeamMembersMessage + ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR + userId[securityGroupRowNumber]);
}
}
else
{
result = ConstantStrings.FALSE;
}
return result;
}
/// <summary>
/// Checks users in team members list.
/// </summary>
/// <param name="clientContext">ClientContext object</param>
/// <param name="matter">Matter object</param>
/// <param name="userId">Id of the user's row</param>
/// <returns>Security group existence</returns>
internal static string ValidateTeamMembers(ClientContext clientContext, Matter matter, IList<string> userId)
{
string result = string.Empty;
bool isInvalidUser = false;
int iCounter = 0, teamMembersRowCount = matter.AssignUserEmails.Count(), iCount = 0;
List<Principal> teamMemberPrincipalCollection = new List<Principal>();
try
{
for (iCounter = 0; iCounter < teamMembersRowCount; iCounter++)
{
IList<string> userList = matter.AssignUserEmails[iCounter].Where(user => !string.IsNullOrWhiteSpace(user.Trim())).ToList();
IList<string> userNameList = matter.AssignUserNames[iCounter].Where(user => !string.IsNullOrWhiteSpace(user.Trim())).ToList();
foreach (string userName in userList)
{
Principal teamMemberPrincipal = clientContext.Web.EnsureUser(userName.Trim());
clientContext.Load(teamMemberPrincipal, teamMemberPrincipalProperties => teamMemberPrincipalProperties.Title);
teamMemberPrincipalCollection.Add(teamMemberPrincipal);
}
clientContext.ExecuteQuery();
//// Check whether the name entered by the user and the name resolved by SharePoint is same.
foreach (string teamMember in userNameList)
{
if (!string.Equals(teamMember.Trim(), teamMemberPrincipalCollection[iCount].Title.Trim(), StringComparison.OrdinalIgnoreCase))
{
result = string.Format(CultureInfo.InvariantCulture, ConstantStrings.ServiceResponse, ServiceConstantStrings.IncorrectTeamMembersCode, ServiceConstantStrings.IncorrectTeamMembersMessage + ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR + userId[iCounter]);
isInvalidUser = true;
break;
}
iCount++;
}
if (isInvalidUser)
{
break; // To break the outer loop as there is an invalid user
}
}
}
catch (Exception)
{
result = string.Format(CultureInfo.InvariantCulture, ConstantStrings.ServiceResponse, ServiceConstantStrings.IncorrectTeamMembersCode, ServiceConstantStrings.IncorrectTeamMembersMessage + ConstantStrings.DOLLAR + ConstantStrings.Pipe + ConstantStrings.DOLLAR + userId[iCounter]);
}
return result;
}
/// <summary>
/// Fetches the user name updating the matter.
/// </summary>
/// <param name="clientContext">Client context object</param>
/// <returns>Logged-in user name</returns>
internal static string GetUserUpdatingMatter(ClientContext clientContext)
{
string userName = string.Empty;
try
{
Users loggedInUser = UIUtility.GetLoggedInUserDetails(clientContext);
userName = loggedInUser.Email;
}
catch (Exception)
{
throw;
}
return userName;
}
/// <summary>
/// Fetches Matter Name from Matter Stamp properties.
/// </summary>
/// <param name="clientContext">Client context object</param>
/// <param name="matterName">Matter Title</param>
/// <returns>Matter Name related to Matter Title</returns>
internal static string GetMatterName(ClientContext clientContext, string matterName)
{
try
{
PropertyValues properties = clientContext.Web.Lists.GetByTitle(matterName).RootFolder.Properties;
clientContext.Load(properties);
clientContext.ExecuteQuery();
return properties.FieldValues.ContainsKey(ServiceConstantStrings.StampedPropertyMatterGUID) ? System.Web.HttpUtility.HtmlDecode(Convert.ToString(properties.FieldValues[ServiceConstantStrings.StampedPropertyMatterGUID], CultureInfo.InvariantCulture)) : matterName;
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// Assign or Remove Full Control base on parameter given.
/// </summary>
/// <param name="clientContext">Client context object</param>
/// <param name="matter">Matter object</param>
/// <param name="loggedInUser">Name of logged in user</param>
/// <param name="listItemId">ID of the list item</param>
/// <param name="listExists">List of existed list</param>
/// <param name="assignFullControl">Flag to determine Assign or Remove Permission</param>
/// <param name="hasFullPermission">Flag to determine user has Full Permission or not</param>
internal static void AssignRemoveFullControl(ClientContext clientContext, Matter matter, string loggedInUser, int listItemId, List<string> listExists, bool assignFullControl, bool hasFullPermission)
{
IList<IList<string>> currentUser = new List<IList<string>>();
IList<string> currentLoggedInUser = new List<string>() { loggedInUser };
currentUser.Add(currentLoggedInUser);
IList<string> permission = new List<string>() { ConstantStrings.EditMatterAllowedPermissionLevel };
if (assignFullControl)
{
//Assign full control to Matter
if (listExists.Contains(matter.Name))
{
Lists.SetPermission(clientContext, currentUser, permission, matter.Name);
}
//Assign full control to OneNote
if (listExists.Contains(matter.Name + ServiceConstantStrings.OneNoteLibrarySuffix))
{
Lists.SetPermission(clientContext, currentUser, permission, matter.Name + ServiceConstantStrings.OneNoteLibrarySuffix);
}
// Assign full control to Task list
if (listExists.Contains(matter.Name + ServiceConstantStrings.TaskNameSuffix))
{
Lists.SetPermission(clientContext, currentUser, permission, matter.Name + ServiceConstantStrings.TaskNameSuffix);
}
//Assign full control to calendar
if (listExists.Contains(matter.Name + ServiceConstantStrings.CalendarNameSuffix))
{
Lists.SetPermission(clientContext, currentUser, permission, matter.Name + ServiceConstantStrings.CalendarNameSuffix);
}
// Assign full control to Matter Landing page
if (0 <= listItemId)
{
Lists.SetItemPermission(clientContext, currentUser, ServiceConstantStrings.MatterLandingPageRepositoryName, listItemId, permission);
}
}
else
{
if (!hasFullPermission)
{
//Remove full control to Matter
if (listExists.Contains(matter.Name))
{
RemoveFullControl(clientContext, matter.Name, loggedInUser, false, -1);
}
//Remove full control to OneNote
if (listExists.Contains(matter.Name + ServiceConstantStrings.OneNoteLibrarySuffix))
{
RemoveFullControl(clientContext, matter.Name + ServiceConstantStrings.OneNoteLibrarySuffix, loggedInUser, false, -1);
}
// Remove full control to Task list
if (listExists.Contains(matter.Name + ServiceConstantStrings.TaskNameSuffix))
{
RemoveFullControl(clientContext, matter.Name + ServiceConstantStrings.TaskNameSuffix, loggedInUser, false, -1);
}
//Remove full control to calendar
if (listExists.Contains(matter.Name + ServiceConstantStrings.CalendarNameSuffix))
{
RemoveFullControl(clientContext, matter.Name + ServiceConstantStrings.CalendarNameSuffix, loggedInUser, false, -1);
}
if (0 <= listItemId)
{
RemoveFullControl(clientContext, ServiceConstantStrings.MatterLandingPageRepositoryName, loggedInUser, true, listItemId);
}
}
}
}
/// <summary>
/// Remove Full Permission.
/// </summary>
/// <param name="clientContext">Client context object</param>
/// <param name="listName">Name of the list</param>
/// <param name="currentLoggedInUser">Name of logged in User</param>
internal static void RemoveFullControl(ClientContext clientContext, string listName, string currentLoggedInUser, bool isListItem, int matterLandingPageId)
{
ListItem listItem = null;
RoleAssignmentCollection roleCollection = null;
List list = clientContext.Web.Lists.GetByTitle(listName);
clientContext.Load(list);
clientContext.ExecuteQuery();
if (isListItem)
{
// Fetch the list item
if (0 <= matterLandingPageId)
{
listItem = list.GetItemById(matterLandingPageId);
clientContext.Load(listItem, listProperties => listProperties.RoleAssignments.Include(roleAssignmentProperties => roleAssignmentProperties.Member, roleAssignmentProperties => roleAssignmentProperties.Member.Title, roleAssignmentProperties => roleAssignmentProperties.RoleDefinitionBindings.Include(roleDef => roleDef.Name, roleDef => roleDef.BasePermissions)));
clientContext.ExecuteQuery();
roleCollection = listItem.RoleAssignments;
}
}
else
{
clientContext.Load(list, listProperties => listProperties.RoleAssignments.Include(roleAssignmentProperties => roleAssignmentProperties.Member, roleAssignmentProperties => roleAssignmentProperties.Member.Title, roleAssignmentProperties => roleAssignmentProperties.RoleDefinitionBindings.Include(roleDef => roleDef.Name, roleDef => roleDef.BasePermissions)));
clientContext.ExecuteQuery();
roleCollection = list.RoleAssignments;
}
if (null != roleCollection && 0 < roleCollection.Count)
{
foreach (RoleAssignment role in roleCollection)
{
if (role.Member.Title == currentLoggedInUser)
{
IList<RoleDefinition> roleDefinationList = new List<RoleDefinition>();
foreach (RoleDefinition roleDef in role.RoleDefinitionBindings)
{
if (roleDef.Name == ConstantStrings.EditMatterAllowedPermissionLevel)
{
roleDefinationList.Add(roleDef);
}
}
foreach (RoleDefinition roleDef in roleDefinationList)
{
role.RoleDefinitionBindings.Remove(roleDef);
}
}
role.Update();
}
}
clientContext.ExecuteQuery();
}
/// <summary>
/// Check Full Permission for logged in User.
/// </summary>
/// <param name="AssignUserNames">List of Assigned UserNames</param>
/// <param name="Permissions">List of Permission</param>
/// <param name="loggedInUserName">Name of logged in User</param>
/// <returns>Status of Full Permission</returns>
internal static bool CheckFullPermissionInAssignList(IList<IList<string>> assignUserEmails, IList<string> Permissions, string loggedInUserName)
{
bool result = false;
if (null != Permissions && null != assignUserEmails && Permissions.Count == assignUserEmails.Count)
{
int position = 0;
foreach (string roleName in Permissions)
{
IList<string> AssignUserEmails = assignUserEmails[position];
if (!string.IsNullOrWhiteSpace(roleName) && null != AssignUserEmails)
{
foreach (string user in AssignUserEmails)
{
if (!string.IsNullOrWhiteSpace(user) && user.Trim().Equals(loggedInUserName.Trim()))
{
if (roleName == ConstantStrings.EditMatterAllowedPermissionLevel)
{
return true;
}
}
}
}
position++;
}
return result;
}
return result;
}
/// <summary>
/// Validates if there is at-least one user with full control in assign list.
/// </summary>
/// <param name="matter">Matter object</param>
/// <returns>Status of Full Control permission</returns>
internal static bool ValidateFullControlPermission(Matter matter)
{
bool hasFullConrol = false;
if (null != matter && null != matter.Permissions && 0 != matter.Permissions.Count)
{
hasFullConrol = matter.Permissions.Contains(ConstantStrings.EditMatterAllowedPermissionLevel);
}
return hasFullConrol;
}
}
}

Просмотреть файл

@ -1,174 +0,0 @@
// ***********************************************************************
// Assembly : Microsoft.Legal.MatterCenter.ProviderService
// Author : v-prd
// Created : 29-01-2015
//
// ***********************************************************************
// <copyright file="MailHelperFunctions.cs" company="Microsoft">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>This file provides methods involved in mail functionalities.</summary>
// ***********************************************************************
namespace Microsoft.Legal.MatterCenter.ProviderService
{
#region using
using Microsoft.Exchange.WebServices.Data;
using Microsoft.Legal.MatterCenter.Utility;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.ServiceModel.Web;
#endregion
/// <summary>
/// Provide methods involved in mail functionalities.
/// </summary>
internal static class MailHelperFunctions
{
/// <summary>
/// Generates the email.
/// </summary>
/// <param name="collectionOfAttachments">The collection of attachments.</param>
/// <returns>Stream Content</returns>
internal static Stream GenerateEmail(Dictionary<string, Stream> collectionOfAttachments, string[] documentUrls, bool attachmentFlag)
{
Stream result = null;
try
{
MemoryStream mailFile = GetMailAsStream(collectionOfAttachments, documentUrls, attachmentFlag);
mailFile.Position = 0;
WebOperationContext.Current.OutgoingResponse.Headers.Clear();
WebOperationContext.Current.OutgoingResponse.ContentType = MailHelperFunctions.ReturnExtension(string.Empty);
WebOperationContext.Current.OutgoingResponse.ContentLength = mailFile.Length;
WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Description: File Transfer");
WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition", "attachment; filename=" + ServiceConstantStrings.TempEmailName + DateTime.Now + ConstantStrings.EmailFileExtension);
WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Transfer-Encoding: binary");
WebOperationContext.Current.OutgoingResponse.Headers.Add("Expires: 0");
WebOperationContext.Current.OutgoingResponse.Headers.Add("Cache-Control: must-revalidate, post-check=0, pre-check=0");
WebOperationContext.Current.OutgoingResponse.Headers.Add("Pragma: public");
result = mailFile;
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
Stream mailFile = null;
result = mailFile;
}
return result;
}
/// <summary>
/// Forms the memory stream of the mail with attachments.
/// </summary>
/// <param name="collectionOfAttachments">Collection of attachments as dictionary</param>
/// <returns>Memory stream of the created mail object</returns>
internal static MemoryStream GetMailAsStream(Dictionary<string, Stream> collectionOfAttachments, string[] documentUrls, bool attachmentFlag)
{
MemoryStream result = null;
string documentUrl = string.Empty;
try
{
// need to be able to update/configure or get current version of server
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013);
//// can use on premise exchange server credentials with service.UseDefaultCredentials = true, or explicitly specify the admin account (set default to false)
service.Credentials = new WebCredentials(ConfigurationManager.AppSettings["Mail_Cart_Mail_User_Name"], ConfigurationManager.AppSettings["Mail_Cart_Mail_Password"]);
service.Url = new Uri(ServiceConstantStrings.ExchangeServiceURL);
Microsoft.Exchange.WebServices.Data.EmailMessage email = new Microsoft.Exchange.WebServices.Data.EmailMessage(service);
email.Subject = TextConstants.MailCartMailSubject;
if (attachmentFlag)
{
email.Body = new MessageBody(TextConstants.MailCartMailBody);
foreach (KeyValuePair<string, Stream> mailAttachment in collectionOfAttachments)
{
if (null != mailAttachment.Value)
{
// Remove the date time string before adding the file as an attachment
email.Attachments.AddFileAttachment(mailAttachment.Key.Split('$')[0], mailAttachment.Value);
}
}
}
else
{
int index = 0;
foreach (string currentURL in documentUrls)
{
if (null != currentURL && 0 < currentURL.Length)
{
string[] currentAssets = currentURL.Split('$');
string documentURL = ServiceConstantStrings.SiteURL + currentAssets[1];
string documentName = currentAssets[2];
documentUrl = string.Concat(documentUrl, string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.SendAsEmailFormat, ++index, documentName, documentURL));
}
}
documentUrl = string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.SendAsEmailFontStyle, documentUrl);
email.Body = new MessageBody(documentUrl);
}
//// This header allows us to open the .eml in compose mode in outlook
email.SetExtendedProperty(new ExtendedPropertyDefinition(DefaultExtendedPropertySet.InternetHeaders, "X-Unsent", MapiPropertyType.String), "1");
email.Save(WellKnownFolderName.Drafts); // must save draft in order to get MimeContent
email.Load(new PropertySet(EmailMessageSchema.MimeContent));
MimeContent mimcon = email.MimeContent;
//// Do not make the StylCop fixes for MemoryStream here
MemoryStream fileContents = new MemoryStream();
fileContents.Write(mimcon.Content, 0, mimcon.Content.Length);
fileContents.Position = 0;
result = fileContents;
}
catch (Exception exception)
{
Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
MemoryStream fileContents = new MemoryStream();
result = fileContents;
}
return result;
}
/// <summary>
/// Gets the file content type based on specified extensions.
/// </summary>
/// <param name="fileExtension">Extension of the file</param>
/// <returns>File content type</returns>
internal static string ReturnExtension(string fileExtension)
{
string result = string.Empty;
switch (fileExtension)
{
case ".txt":
result = "text/plain";
break;
case ".doc":
result = "application/ms-word";
break;
case ".xls":
result = "application/vnd.ms-excel";
break;
case ".gif":
result = "image/gif";
break;
case ".jpg":
case "jpeg":
result = "image/jpeg";
break;
case ".bmp":
result = "image/bmp";
break;
case ".wav":
result = "audio/wav";
break;
case ".ppt":
result = "application/mspowerpoint";
break;
case ".dwg":
result = "image/vnd.dwg";
break;
default:
result = "application/octet-stream";
break;
}
return result;
}
}
}

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше