Merge pull request #1784 from bogeorge/react-questions-and-answers-v2
|
@ -6,9 +6,15 @@ This is an application that supports Questions & Answers through a web part that
|
|||
|
||||
![Questions and Answers](./assets/QuestionsAndAnswers.gif)
|
||||
|
||||
## Used SharePoint Framework Version
|
||||
|
||||
![1.11.0](https://img.shields.io/badge/version-1.11.0-green.svg)
|
||||
## Compatibility
|
||||
|
||||
![SPFx 1.11](https://img.shields.io/badge/SPFx-1.11.0-green.svg)
|
||||
![Node.js LTS 10.x](https://img.shields.io/badge/Node.js-LTS%2010.x-green.svg)
|
||||
![SharePoint Online](https://img.shields.io/badge/SharePoint-Online-yellow.svg)
|
||||
![Teams Yes: Designed for Microsoft Teams](https://img.shields.io/badge/Teams-Yes-green.svg "Designed for Microsoft Teams")
|
||||
![Workbench Hosted: Does not work with local workbench](https://img.shields.io/badge/Workbench-Hosted-yellow.svg "Does not work with local workbench")
|
||||
|
||||
|
||||
## Applies to
|
||||
|
||||
|
@ -24,13 +30,14 @@ This is an application that supports Questions & Answers through a web part that
|
|||
|
||||
Solution|Author(s)
|
||||
--------|---------
|
||||
react-questions-and-answers | Bo George ([@bo_george](https://twitter.com/bo_george))
|
||||
react-questions-and-answers | Bo George ([@bo_george](https://twitter.com/bo_george)), Mike Homol ([@homol](https://twitter.com/homol))
|
||||
|
||||
## Version history
|
||||
|
||||
Version|Date|Comments
|
||||
-------|----|--------
|
||||
1.0|September 13, 2020|Initial release
|
||||
2.0|March, 22, 2021|Version 2.0 with new features and new editor based on TinyMCE.<br />This change has new list schema dependencies so you will need remove and re-add the app if you installed version 1.0. See below for more on what's new in 2.o
|
||||
|
||||
## Disclaimer
|
||||
|
||||
|
@ -61,7 +68,7 @@ Version|Date|Comments
|
|||
* If you deployed a shippable (SharePoint Online) version you don't need to do anything else
|
||||
* If you deployed a debug (http://localhost:4321) version you'll need to ensure gulp serve is running
|
||||
|
||||
## Features
|
||||
## Features in Version 1
|
||||
|
||||
Below is intended to provide “notable” details on different features. Notable meaning, they may be different than a typical expectation or require clarification. For all features see “Features based Questions Role” to understand if they are available for a specific role.
|
||||
|
||||
|
@ -133,4 +140,19 @@ Mark/Unmark a Reply as Helpful|Yes|Yes|No
|
|||
Mark/Unmark a Reply as Correct Answer - Question entered by me|Yes|Yes|No
|
||||
Mark/Unmark a Reply as Correct Answer - Question entered by others|Yes|No|No
|
||||
|
||||
## Summary of Features added in Version 2
|
||||
|
||||
* Upgraded editor to support:
|
||||
* use TinyMCE standalone as a replacement for primereact
|
||||
* embedding of images in questions, conversations and replies
|
||||
* at mention users within editor
|
||||
* Introduced "Conversations" which are behave like Questions without the ability to:
|
||||
* Mark a reply as Helpful
|
||||
* Mark a reply as the correct answer
|
||||
* Add ability to categorize questions which:
|
||||
* allows a single site to have questions on many different topics and filter them as necessary
|
||||
* Make the Questions list visible and searchable
|
||||
* added extension which intercepts list item url and redirects to the appropriate questions or conversations page with threaded replies
|
||||
* Bug fixes with dates
|
||||
|
||||
<img src="https://telemetry.sharepointpnp.com/sp-dev-fx-webparts/samples/react-questions-and-answers" />
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
"longDescription": [
|
||||
"This is an application that supports Questions \u0026 Answers through a web part that can be used directly on a Modern SharePoint Site without the need for Yammer or a backing Microsoft Team site. It relies on a backing SharePoint list that is hidden and a provisioned Site Page that hosts a pre-configured version of the questions web part."
|
||||
],
|
||||
"created": "2020-10-01",
|
||||
"modified": "2020-10-01",
|
||||
"created": "2021-03-22",
|
||||
"modified": "2021-03-22",
|
||||
"products": [
|
||||
"SharePoint",
|
||||
"Office"
|
||||
|
@ -67,4 +67,4 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
@ -9,11 +9,20 @@
|
|||
"manifest": "./src/webparts/questions/QuestionsWebPart.manifest.json"
|
||||
}
|
||||
]
|
||||
},
|
||||
"questions-list-manager": {
|
||||
"components": [
|
||||
{
|
||||
"entrypoint": "./lib/extensions/questionsListManager/QuestionsListManagerApplicationCustomizer.js",
|
||||
"manifest": "./src/extensions/questionsListManager/QuestionsListManagerApplicationCustomizer.manifest.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"externals": {},
|
||||
"externals": {
|
||||
},
|
||||
"localizedResources": {
|
||||
"QuestionsWebPartStrings": "lib/webparts/questions/loc/{locale}.js",
|
||||
"ControlStrings": "node_modules/@pnp/spfx-controls-react/lib/loc/{locale}.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,38 +1,57 @@
|
|||
{
|
||||
"$schema": "https://developer.microsoft.com/json-schemas/spfx-build/package-solution.schema.json",
|
||||
"solution": {
|
||||
"name": "Questions and Answers",
|
||||
"id": "6feb4c2f-341b-499c-998c-9b2ebd95435c",
|
||||
"version": "1.0.1.0",
|
||||
"skipFeatureDeployment": false,
|
||||
"iconPath": "images/Feedback_Icon.png",
|
||||
"includeClientSideAssets": true,
|
||||
"features": [
|
||||
{
|
||||
"id": "2088baa5-aab6-43ec-907b-147a786c2b36",
|
||||
"title": "Questions Assets",
|
||||
"description": "Provides assets to support Questions webpart. This includes schema elements such as content types, site columns and list instance as well as the Questions application page.",
|
||||
"version": "1.0.2.0",
|
||||
"assets": {
|
||||
"elementManifests": [
|
||||
"elements.xml"
|
||||
],
|
||||
"elementFiles": [
|
||||
"schema.xml",
|
||||
"QuestionsSitePage.aspx"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"developer": {
|
||||
"name": "Bo George",
|
||||
"websiteUrl": "https://threewill.com/team/bo-george/",
|
||||
"privacyUrl": "",
|
||||
"termsOfUseUrl": "",
|
||||
"mpnId": "m365pnp"
|
||||
}
|
||||
},
|
||||
"paths": {
|
||||
"zippedPackage": "solution/react-questions-and-answers.sppkg"
|
||||
"$schema": "https://developer.microsoft.com/json-schemas/spfx-build/package-solution.schema.json",
|
||||
"solution": {
|
||||
"name": "Questions and Answers",
|
||||
"id": "6feb4c2f-341b-499c-998c-9b2ebd95435c",
|
||||
"version": "2.0.1.15",
|
||||
"skipFeatureDeployment": false,
|
||||
"iconPath": "images/Feedback_Icon.png",
|
||||
"includeClientSideAssets": true,
|
||||
"features": [
|
||||
{
|
||||
"id": "2088baa5-aab6-43ec-907b-147a786c2b36",
|
||||
"title": "Questions Assets",
|
||||
"description": "Provides assets to support Questions webpart. This includes schema elements such as content types, site columns and list instance as well as the Questions application page.",
|
||||
"version": "2.0.1.15",
|
||||
"assets": {
|
||||
"elementManifests": [
|
||||
"elements.xml"
|
||||
],
|
||||
"elementFiles": [
|
||||
"schema.xml",
|
||||
"QuestionsSitePage.aspx",
|
||||
"ConversationsSitePage.aspx"
|
||||
]
|
||||
},
|
||||
"componentIds": [
|
||||
"761fbf9d-6ef9-4099-8488-02d5e2826f36"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "bf9284ec-1ca1-43bc-b277-daf358bdf250",
|
||||
"title": "Question List Manager",
|
||||
"description": "Enables the Question List Manager Application Extension",
|
||||
"version": "2.0.1.15",
|
||||
"assets": {
|
||||
"elementManifests": [
|
||||
"elements2.xml",
|
||||
"ClientSideInstance.xml"
|
||||
]
|
||||
},
|
||||
"componentIds": [
|
||||
"aefe4f31-4914-4dcb-be8c-f24bf52f7719"
|
||||
]
|
||||
}
|
||||
],
|
||||
"developer": {
|
||||
"name": "Bo George",
|
||||
"websiteUrl": "https://threewill.com/team/bo-george/",
|
||||
"privacyUrl": "",
|
||||
"termsOfUseUrl": "",
|
||||
"mpnId": ""
|
||||
}
|
||||
},
|
||||
"paths": {
|
||||
"zippedPackage": "solution/react-questions-and-answers.sppkg"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_arrow_redo_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_arrow_redo_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M19.25,1.99981721 C18.8703042,1.99981721 18.556509,2.28197109 18.5068466,2.64804665 L18.5,2.74981721 L18.5,8.43981721 L13.9256607,3.87995431 C11.483715,1.43800869 7.56154453,1.37844904 5.04739282,3.70127537 L4.8615166,3.87995431 C2.35852234,6.38294858 2.35852234,10.4411041 4.8615166,12.9440984 L13.7066528,21.7832698 L13.7066528,21.7832698 C13.9996749,22.0760341 14.4744198,22.0756964 14.767313,21.7828032 C15.0602061,21.48991 15.0598683,21.0149074 14.7668462,20.7221431 L5.92217677,11.8834382 L5.92217677,11.8834382 C4.00496895,9.96623037 4.00496895,6.85782231 5.92217677,4.94061449 C7.78128739,3.08150387 10.7604981,3.02516718 12.6881921,4.77230194 L12.8657665,4.94137945 L17.438,9.49981721 L11.75,9.5 C11.3703042,9.5 11.056509,9.78215388 11.0068466,10.1482294 L11,10.25 C11,10.6296958 11.2821539,10.943491 11.6482294,10.9931534 L11.75,11 L19.25,11 C19.6296958,11 19.943491,10.7178461 19.9931534,10.3517706 L20,10.25 L20,2.74981721 C20,2.33560365 19.6642136,1.99981721 19.25,1.99981721 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_arrow_undo_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_arrow_undo_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M4.75,1.99981721 C5.12969577,1.99981721 5.44349096,2.28197109 5.49315338,2.64804665 L5.5,2.74981721 L5.5,8.43981721 L10.0743393,3.87995431 C12.516285,1.43800869 16.4384555,1.37844904 18.9526072,3.70127537 L19.1384834,3.87995431 C21.6414777,6.38294858 21.6414777,10.4411041 19.1384834,12.9440984 L10.2933472,21.7832698 L10.2933472,21.7832698 C10.0003251,22.0760341 9.52558023,22.0756964 9.23268704,21.7828032 C8.93979385,21.48991 8.9401317,21.0149074 9.23315376,20.7221431 L18.0778232,11.8834382 L18.0778232,11.8834382 C19.9950311,9.96623037 19.9950311,6.85782231 18.0778232,4.94061449 C16.2187126,3.08150387 13.2395019,3.02516718 11.3118079,4.77230194 L11.1342335,4.94137945 L6.562,9.49981721 L12.25,9.5 C12.6296958,9.5 12.943491,9.78215388 12.9931534,10.1482294 L13,10.25 C13,10.6296958 12.7178461,10.943491 12.3517706,10.9931534 L12.25,11 L4.75,11 C4.37030423,11 4.05650904,10.7178461 4.00684662,10.3517706 L4,10.25 L4,2.74981721 C4,2.33560365 4.33578644,1.99981721 4.75,1.99981721 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_color_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_color_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M3.83904058,5.85749561 C6.78004581,1.94188971 12.8686707,0.802505202 17.2029394,3.497377 C21.4827525,6.15839057 23.0567972,11.2744655 21.303866,16.0747407 C19.648689,20.6073231 15.2875295,22.403209 12.1442101,20.1231428 C10.9667425,19.2690444 10.5102901,18.1984035 10.2896576,16.4593132 L10.1842745,15.4713913 L10.1388589,15.073954 C10.0162342,14.1399065 9.82780748,13.7214296 9.43453605,13.5022264 C8.89894535,13.2036966 8.54231757,13.1967226 7.83905282,13.4692784 L7.48794193,13.6148779 L7.30920754,13.6928218 C6.29543196,14.1331038 5.62104161,14.2877923 4.76804588,14.1090543 L4.56779442,14.0618665 L4.40426138,14.0152691 C1.61529547,13.1510586 1.20220653,9.36813303 3.83904058,5.85749561 Z M4.8232597,12.5739125 L4.94616428,12.610372 L5.080113,12.6412161 C5.51918878,12.7281665 5.89444039,12.6556749 6.51713486,12.3993955 L7.11930681,12.1421347 C8.32144994,11.6492191 9.1045463,11.6010233 10.1648305,12.1920088 C11.0824191,12.7034581 11.4400583,13.4895978 11.62247,14.8516511 L11.6756637,15.310802 L11.729873,15.8425189 L11.7770095,16.2649431 C11.9490842,17.6262078 12.2619162,18.3554553 13.024955,18.90894 C15.3002886,20.5593963 18.5593937,19.2173263 19.8948725,15.5602143 C21.411142,11.4080201 20.0689941,7.04567303 16.4109117,4.77122636 C12.736718,2.48676231 7.51248742,3.46438986 5.03840796,6.75833849 C2.96361994,9.52067707 3.21809532,12.0378944 4.8232597,12.5739125 Z M16.0477462,10.5795744 C15.8690689,9.91274179 16.264797,9.2273206 16.9316297,9.04864333 C17.5984623,8.86996607 18.2838835,9.26569418 18.4625608,9.93252681 C18.641238,10.5993594 18.2455099,11.2847806 17.5786773,11.4634579 C16.9118447,11.6421352 16.2264235,11.2464071 16.0477462,10.5795744 Z M16.5423361,14.0682389 C16.3636589,13.4014063 16.759387,12.7159851 17.4262196,12.5373078 C18.0930522,12.3586306 18.7784734,12.7543587 18.9571507,13.4211913 C19.135828,14.0880239 18.7400999,14.7734451 18.0732672,14.9521224 C17.4064346,15.1307997 16.7210134,14.7350716 16.5423361,14.0682389 Z M14.0692386,7.57689062 C13.8905613,6.91005799 14.2862894,6.2246368 14.9531221,6.04595953 C15.6199547,5.86728227 16.3053759,6.26301038 16.4840531,6.92984301 C16.6627304,7.59667564 16.2670023,8.28209683 15.6001697,8.4607741 C14.933337,8.63945136 14.2479158,8.24372325 14.0692386,7.57689062 Z M14.0407569,16.5752747 C13.8620796,15.9084421 14.2578077,15.2230209 14.9246403,15.0443437 C15.591473,14.8656664 16.2768942,15.2613945 16.4555714,15.9282271 C16.6342487,16.5950598 16.2385206,17.280481 15.571688,17.4591582 C14.9048553,17.6378355 14.2194341,17.2421074 14.0407569,16.5752747 Z M10.5438339,6.60529725 C10.3651566,5.93846462 10.7608847,5.25304343 11.4277174,5.07436616 C12.09455,4.8956889 12.7799712,5.29141701 12.9586484,5.95824964 C13.1373257,6.62508227 12.7415976,7.31050346 12.074765,7.48918073 C11.4079323,7.66785799 10.7225111,7.27212988 10.5438339,6.60529725 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.3 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_copy_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_copy_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M5.50280381,4.62704038 L5.5,6.75 L5.5,17.2542087 C5.5,19.0491342 6.95507456,20.5042087 8.75,20.5042087 L17.3662868,20.5044622 C17.057338,21.3782241 16.2239751,22.0042087 15.2444057,22.0042087 L8.75,22.0042087 C6.12664744,22.0042087 4,19.8775613 4,17.2542087 L4,6.75 C4,5.76928848 4.62744523,4.93512464 5.50280381,4.62704038 Z M17.75,2 C18.9926407,2 20,3.00735931 20,4.25 L20,17.25 C20,18.4926407 18.9926407,19.5 17.75,19.5 L8.75,19.5 C7.50735931,19.5 6.5,18.4926407 6.5,17.25 L6.5,4.25 C6.5,3.00735931 7.50735931,2 8.75,2 L17.75,2 Z M17.75,3.5 L8.75,3.5 C8.33578644,3.5 8,3.83578644 8,4.25 L8,17.25 C8,17.6642136 8.33578644,18 8.75,18 L17.75,18 C18.1642136,18 18.5,17.6642136 18.5,17.25 L18.5,4.25 C18.5,3.83578644 18.1642136,3.5 17.75,3.5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.1409 9.34138L12.14 9.34274L7.37017 2.32828C7.13725 1.98575 6.67077 1.8969 6.32824 2.12982C5.98572 2.36273 5.89687 2.82922 6.12978 3.17174L11.2606 10.7169L8.86478 14.4604C8.30797 14.1664 7.67342 14 7 14C4.79086 14 3 15.7909 3 18C3 20.2091 4.79086 22 7 22C9.20914 22 11 20.2091 11 18C11 17.0088 10.6395 16.1018 10.0424 15.403L12.178 12.0661L14.2426 15.1023C13.4771 15.8309 13 16.8597 13 18C13 20.2091 14.7909 22 17 22C19.2091 22 21 20.2091 21 18C21 15.7909 19.2091 14 17 14C16.471 14 15.9659 14.1027 15.5037 14.2893L13.0575 10.6919L13.0588 10.6899L12.1409 9.34138ZM4.5 18C4.5 16.6193 5.61929 15.5 7 15.5C8.38071 15.5 9.5 16.6193 9.5 18C9.5 19.3807 8.38071 20.5 7 20.5C5.61929 20.5 4.5 19.3807 4.5 18ZM14.5 18C14.5 16.6193 15.6193 15.5 17 15.5C18.3807 15.5 19.5 16.6193 19.5 18C19.5 19.3807 18.3807 20.5 17 20.5C15.6193 20.5 14.5 19.3807 14.5 18Z" fill="#212121"/>
|
||||
<path d="M13.9381 9.31594L17.8815 3.15426C18.1048 2.80538 18.003 2.34155 17.6541 2.11827C17.3053 1.89498 16.8414 1.9968 16.6181 2.34568L13.0202 7.96744L13.9381 9.31594Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_dismiss_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_dismiss_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M4.39705176,4.55378835 L4.46966991,4.46966991 C4.73593648,4.20340335 5.15260016,4.1791973 5.44621165,4.39705176 L5.53033009,4.46966991 L12,10.939 L18.4696699,4.46966991 C18.7625631,4.1767767 19.2374369,4.1767767 19.5303301,4.46966991 C19.8232233,4.76256313 19.8232233,5.23743687 19.5303301,5.53033009 L13.061,12 L19.5303301,18.4696699 C19.7965966,18.7359365 19.8208027,19.1526002 19.6029482,19.4462117 L19.5303301,19.5303301 C19.2640635,19.7965966 18.8473998,19.8208027 18.5537883,19.6029482 L18.4696699,19.5303301 L12,13.061 L5.53033009,19.5303301 C5.23743687,19.8232233 4.76256313,19.8232233 4.46966991,19.5303301 C4.1767767,19.2374369 4.1767767,18.7625631 4.46966991,18.4696699 L10.939,12 L4.46966991,5.53033009 C4.20340335,5.26406352 4.1791973,4.84739984 4.39705176,4.55378835 L4.46966991,4.46966991 L4.39705176,4.55378835 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_highlight_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_highlight_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M20.2585648,2.00438474 C20.6382605,2.00472706 20.9518016,2.28716326 21.0011348,2.65328337 L21.0078899,2.75506004 L21.0038407,7.25276883 C21.0009137,8.40908568 20.1270954,9.36072944 19.0029371,9.48671858 L19.0024932,11.7464847 C19.0024932,12.9373487 18.0773316,13.9121296 16.906542,13.9912939 L16.7524932,13.9964847 L16.501,13.9963847 L16.5017549,16.7881212 C16.5017549,17.6030744 16.0616895,18.349347 15.3600767,18.7462439 L15.2057929,18.8258433 L8.57108142,21.9321389 C8.10484975,22.1504232 7.57411944,21.8450614 7.50959937,21.3535767 L7.50306874,21.2528982 L7.503,13.9963847 L7.25,13.9964847 C6.05913601,13.9964847 5.08435508,13.0713231 5.00519081,11.9005335 L5,11.7464847 L5.00043957,9.4871861 C3.92882124,9.36893736 3.08392302,8.49812196 3.0058865,7.41488149 L3,7.25086975 L3,2.75438506 C3,2.3401715 3.33578644,2.00438474 3.75,2.00438474 C4.12969577,2.00438474 4.44349096,2.28653894 4.49315338,2.6526145 L4.5,2.75438506 L4.5,7.25086975 C4.5,7.63056552 4.78215388,7.94436071 5.14822944,7.99402313 L5.25,8.00086975 L18.7512697,8.00087075 C19.1315998,8.00025031 19.4461483,7.71759877 19.4967392,7.3518545 L19.5038434,7.25019537 L19.5078902,2.75371008 C19.508263,2.33949668 19.8443515,2.00401258 20.2585648,2.00438474 Z M15.001,13.9963847 L9.003,13.9963847 L9.00306874,20.0736262 L14.5697676,17.4673619 C14.8004131,17.3593763 14.9581692,17.1431606 14.9940044,16.89581 L15.0017549,16.7881212 L15.001,13.9963847 Z M17.502,9.50038474 L6.5,9.50038474 L6.5,11.7464847 C6.5,12.1261805 6.78215388,12.4399757 7.14822944,12.4896381 L7.25,12.4964847 L16.7524932,12.4964847 C17.1321889,12.4964847 17.4459841,12.2143308 17.4956465,11.8482552 L17.5024932,11.7464847 L17.502,9.50038474 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_image_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_image_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M17.75,3 C19.5449254,3 21,4.45507456 21,6.25 L21,17.75 C21,19.5449254 19.5449254,21 17.75,21 L6.25,21 C4.45507456,21 3,19.5449254 3,17.75 L3,6.25 C3,4.45507456 4.45507456,3 6.25,3 L17.75,3 Z M18.330538,19.401407 L12.5246673,13.7148182 C12.259617,13.4552555 11.8501251,13.4316429 11.558795,13.6439914 L11.4752034,13.7147748 L5.66845098,19.4010512 C5.85040089,19.4651384 6.04612926,19.5 6.25,19.5 L17.75,19.5 C17.9534932,19.5 18.1488742,19.4652674 18.330538,19.401407 L12.5246673,13.7148182 L18.330538,19.401407 Z M17.75,4.5 L6.25,4.5 C5.28350169,4.5 4.5,5.28350169 4.5,6.25 L4.5,17.75 C4.5,17.9584012 4.53642824,18.1582941 4.60326447,18.3436585 L10.4257839,12.6429919 C11.2588664,11.8272921 12.5674613,11.7885018 13.4457696,12.5265833 L13.5741754,12.6431221 L19.396372,18.3446658 C19.4634397,18.1590183 19.5,17.9587787 19.5,17.75 L19.5,6.25 C19.5,5.28350169 18.7164983,4.5 17.75,4.5 Z M15.252115,6.5 C16.4959237,6.5 17.50423,7.50830622 17.50423,8.75211499 C17.50423,9.99592375 16.4959237,11.00423 15.252115,11.00423 C14.0083062,11.00423 13,9.99592375 13,8.75211499 C13,7.50830622 14.0083062,6.5 15.252115,6.5 Z M15.252115,8 C14.8367333,8 14.5,8.33673335 14.5,8.75211499 C14.5,9.16749662 14.8367333,9.50422997 15.252115,9.50422997 C15.6674966,9.50422997 16.00423,9.16749662 16.00423,8.75211499 C16.00423,8.33673335 15.6674966,8 15.252115,8 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_link_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_link_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M9.25,7 C9.66421356,7 10,7.33578644 10,7.75 C10,8.12655778 9.72249055,8.43829976 9.3608295,8.49186807 L9.25,8.5 L7,8.5 C5.06700338,8.5 3.5,10.0670034 3.5,12 C3.5,13.863961 4.95707329,15.3876044 6.79434841,15.4940585 L7,15.5 L9.25,15.5 C9.66421356,15.5 10,15.8357864 10,16.25 C10,16.6265578 9.72249055,16.9382998 9.3608295,16.9918681 L9.25,17 L7,17 C4.23857625,17 2,14.7614237 2,12 C2,9.32225576 4.10496059,7.13615141 6.75044957,7.00611913 L7,7 L9.25,7 Z M17,7 C19.7614237,7 22,9.23857625 22,12 C22,14.6777442 19.8950394,16.8638486 17.2495504,16.9938809 L17,17 L14.75,17 C14.3357864,17 14,16.6642136 14,16.25 C14,15.8734422 14.2775095,15.5617002 14.6391705,15.5081319 L14.75,15.5 L17,15.5 C18.9329966,15.5 20.5,13.9329966 20.5,12 C20.5,10.136039 19.0429267,8.61239564 17.2056516,8.50594148 L17,8.5 L14.75,8.5 C14.3357864,8.5 14,8.16421356 14,7.75 C14,7.37344222 14.2775095,7.06170024 14.6391705,7.00813193 L14.75,7 L17,7 Z M7,11.25 L17,11.25 C17.4142136,11.25 17.75,11.5857864 17.75,12 C17.75,12.3796958 17.4678461,12.693491 17.1017706,12.7431534 L17,12.75 L7,12.75 C6.58578644,12.75 6.25,12.4142136 6.25,12 C6.25,11.6203042 6.53215388,11.306509 6.89822944,11.2568466 L7,11.25 L17,11.25 L7,11.25 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,6 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.25 5C9.66421 5 10 5.33579 10 5.75C10 6.12656 9.72249 6.4383 9.36083 6.49187L9.25 6.5H7C5.067 6.5 3.5 8.067 3.5 10C3.5 11.864 4.95707 13.3876 6.79435 13.4941L7 13.5H9.25C9.66421 13.5 10 13.8358 10 14.25C10 14.6266 9.72249 14.9383 9.36083 14.9919L9.25 15H7C4.23858 15 2 12.7614 2 10C2 7.32226 4.10496 5.13615 6.75045 5.00612L7 5H9.25Z" fill="#212121"/>
|
||||
<path d="M17 5C19.7614 5 22 7.23858 22 10C22 10.2921 21.975 10.5783 21.9269 10.8566C21.5089 10.4752 21.0162 10.2212 20.4987 10.0945C20.4996 10.0631 20.5 10.0316 20.5 10C20.5 8.13604 19.0429 6.6124 17.2057 6.50594L17 6.5H14.75C14.3358 6.5 14 6.16421 14 5.75C14 5.37344 14.2775 5.0617 14.6392 5.00813L14.75 5H17Z" fill="#212121"/>
|
||||
<path d="M7 9.25H17C17.4142 9.25 17.75 9.58579 17.75 10C17.75 10.3797 17.4678 10.6935 17.1018 10.7432L17 10.75H7C6.58579 10.75 6.25 10.4142 6.25 10C6.25 9.6203 6.53215 9.30651 6.89823 9.25685L7 9.25Z" fill="#212121"/>
|
||||
<path d="M12.1957 17.5719L18.0981 11.6695C18.9908 10.7768 20.438 10.7768 21.3306 11.6695C22.2232 12.5621 22.2232 14.0093 21.3306 14.9019L15.4282 20.8043C15.084 21.1485 14.6528 21.3926 14.1807 21.5106L12.35 21.9683C11.5538 22.1674 10.8327 21.4462 11.0317 20.6501L11.4894 18.8194C11.6075 18.3472 11.8516 17.916 12.1957 17.5719ZM19.1588 12.7301L13.2564 18.6325C13.1045 18.7844 12.9967 18.9748 12.9446 19.1832L12.6539 20.3462L13.8169 20.0554C14.0253 20.0033 14.2156 19.8956 14.3675 19.7437L20.2699 13.8412C20.5768 13.5344 20.5768 13.0369 20.2699 12.7301C19.9631 12.4233 19.4656 12.4233 19.1588 12.7301Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_link_remove_20_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_link_remove_20_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M14.5,10 C16.9853,10 19,12.0147 19,14.5 C19,16.9853 16.9853,19 14.5,19 C12.0147,19 10,16.9853 10,14.5 C10,12.0147 12.0147,10 14.5,10 Z M12.7322,12.7322 C12.537,12.9275 12.537,13.2441 12.7322,13.4393 L13.7929,14.5 L12.7322,15.5607 C12.537,15.7559 12.537,16.0725 12.7322,16.2678 C12.9275,16.463 13.2441,16.463 13.4393,16.2678 L14.5,15.2071 L15.5607,16.2678 C15.7559,16.463 16.0725,16.463 16.2678,16.2678 C16.463,16.0725 16.463,15.7559 16.2678,15.5607 L15.2071,14.5 L16.2678,13.4393 C16.463,13.2441 16.463,12.9275 16.2678,12.7322 C16.0725,12.537 15.7559,12.537 15.5607,12.7322 L14.5,13.7929 L13.4393,12.7322 C13.2441,12.537 12.9275,12.537 12.7322,12.7322 Z M8,4 C8.27614,4 8.5,4.22386 8.5,4.5 C8.5,4.74546 8.32312,4.94961 8.08988,4.99194 L8,5 L6,5 C4.34315,5 3,6.34315 3,8 C3,9.59058 4.23784,10.892 5.80275,10.9936 L6,11 L8,11 C8.27614,11 8.5,11.2239 8.5,11.5 C8.5,11.7455 8.32312,11.9496 8.08988,11.9919 L8,12 L6,12 C3.79086,12 2,10.2091 2,8 C2,5.8645 3.67346,4.11986 5.78053,4.00592 L6,4 L8,4 Z M14,4 C16.2091,4 18,5.79086 18,8 C18,8.68859 17.826,9.33654 17.5196,9.90229 C17.242,9.71965 16.947,9.56146 16.6375,9.43079 C16.8687,9.00552 17,8.5181 17,8 C17,6.40942 15.7622,5.10795 14.1973,5.00638 L14,5 L12,5 C11.7239,5 11.5,4.77614 11.5,4.5 C11.5,4.25454 11.6769,4.05039 11.9101,4.00806 L12,4 L14,4 Z M14,7.5 C14.2761,7.5 14.5,7.72386 14.5,8 C14.5,8.24546 14.3231,8.44961 14.0899,8.49194 L14,8.5 L6,8.5 C5.72386,8.5 5.5,8.27614 5.5,8 C5.5,7.75454 5.67688,7.55039 5.91012,7.50806 L6,7.5 L14,7.5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_lock_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_lock_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M12,2 C14.209139,2 16,3.790861 16,6 L16,8 L17.75,8 C18.9926407,8 20,9.00735931 20,10.25 L20,19.75 C20,20.9926407 18.9926407,22 17.75,22 L6.25,22 C5.00735931,22 4,20.9926407 4,19.75 L4,10.25 C4,9.00735931 5.00735931,8 6.25,8 L8,8 L8,6 C8,3.790861 9.790861,2 12,2 Z M17.75,9.5 L6.25,9.5 C5.83578644,9.5 5.5,9.83578644 5.5,10.25 L5.5,19.75 C5.5,20.1642136 5.83578644,20.5 6.25,20.5 L17.75,20.5 C18.1642136,20.5 18.5,20.1642136 18.5,19.75 L18.5,10.25 C18.5,9.83578644 18.1642136,9.5 17.75,9.5 Z M12.000125,13.5 C12.8285521,13.5 13.500125,14.1715729 13.500125,15 C13.500125,15.8284271 12.8285521,16.5 12.000125,16.5 C11.1716979,16.5 10.500125,15.8284271 10.500125,15 C10.500125,14.1715729 11.1716979,13.5 12.000125,13.5 Z M12,3.5 C10.6192881,3.5 9.5,4.61928813 9.5,6 L9.5,8 L14.5,8 L14.5,6 C14.5,4.61928813 13.3807119,3.5 12,3.5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_open_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_open_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M7.25008054,4.49999913 L10.7494682,4.49999913 C11.1636818,4.49999913 11.4994682,4.83578644 11.4994682,5.25 C11.4994682,5.62969577 11.2173143,5.94349023 10.8512388,5.99315253 L10.7494682,5.99999913 L7.24972349,5.99999913 C6.07077742,5.99943864 5.10347879,6.90639393 5.00784424,8.06094921 L5.00026803,8.21986131 L5.00310465,16.7504962 C5.00341779,17.9413602 5.92883567,18.9158978 7.09964605,18.9947542 L7.25369622,18.9999045 L15.751762,18.9882338 C16.9414684,18.9865998 17.9144722,18.0618298 17.9934904,16.8921377 L17.9986716,16.738236 L17.9986716,13.2319436 C17.9986716,12.81773 18.334458,12.4819436 18.7486716,12.4819436 C19.1283674,12.4819436 19.4421626,12.7640975 19.491825,13.130173 L19.4986716,13.2319436 L19.4986716,16.738236 C19.4986716,18.7405488 17.9292489,20.3767194 15.9527826,20.4827708 L15.7538222,20.4882324 L7.25825518,20.499901 L7.05493071,20.4947588 C5.14237343,20.3951844 3.60893529,18.8625525 3.50835508,16.9500479 L3.5031047,16.7508907 L3.50087004,8.2525319 L3.50527942,8.05003289 C3.60537339,6.13731798 5.13865446,4.60431851 7.05094826,4.50510482 L7.25008054,4.49999913 L10.7494682,4.49999913 L7.25008054,4.49999913 Z M13.748109,3.00129623 L20.3017795,3.0018036 L20.4013609,3.01557712 L20.4013609,3.01557712 L20.5021655,3.04376069 L20.5021655,3.04376069 L20.5589882,3.06786568 L20.5589882,3.06786568 C20.6122302,3.09104804 20.6633548,3.12146211 20.7110467,3.15867802 L20.7803898,3.22139044 L20.7803898,3.22139044 L20.8641342,3.31997258 L20.8641342,3.31997258 L20.9183108,3.41008637 L20.9183108,3.41008637 L20.9570021,3.50039784 L20.9570021,3.50039784 L20.9762122,3.56459327 L20.9762122,3.56459327 L20.9897783,3.62845344 L20.9897783,3.62845344 L20.9991402,3.72265407 L20.9991402,3.72265407 L20.9996358,10.2551867 C20.9996358,10.6694002 20.6638494,11.0051867 20.2496358,11.0051867 C19.86994,11.0051867 19.5561448,10.7230328 19.5064824,10.3569572 L19.4996358,10.2551867 L19.49887,5.56129623 L12.2796385,12.7845179 C12.0134324,13.0508449 11.5967743,13.0751456 11.3031133,12.8573578 L11.2189784,12.7847587 C10.9526514,12.5185526 10.9283507,12.1018944 11.1461385,11.8082335 L11.2187376,11.7240986 L18.43687,4.50129623 L13.748109,4.50129623 C13.3684132,4.50129623 13.054618,4.21914235 13.0049556,3.85306678 L12.998109,3.75129623 C12.998109,3.37160046 13.2802629,3.05780527 13.6463384,3.00814284 L13.748109,3.00129623 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_table_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_table_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M17.75,3 C19.5449,3 21,4.45507 21,6.25 L21,17.75 C21,19.5449 19.5449,21 17.75,21 L6.25,21 C4.45507,21 3,19.5449 3,17.75 L3,6.25 C3,4.45507 4.45507,3 6.25,3 L17.75,3 Z M14,15.5 L10,15.5 L10,19.5 L14,19.5 L14,15.5 Z M19.5,15.5 L15.5,15.5 L15.5,19.5 L17.75,19.5 C18.7165,19.5 19.5,18.7165 19.5,17.75 L19.5,17.75 L19.5,15.5 Z M8.5,15.5 L4.5,15.5 L4.5,17.75 C4.5,18.7165 5.2835,19.5 6.25,19.5 L6.25,19.5 L8.5,19.5 L8.5,15.5 Z M8.5,10 L4.5,10 L4.5,14 L8.5,14 L8.5,10 Z M14,10 L10,10 L10,14 L14,14 L14,10 Z M19.5,10 L15.5,10 L15.5,14 L19.5,14 L19.5,10 Z M8.5,4.5 L6.25,4.5 C5.2835,4.5 4.5,5.2835 4.5,6.25 L4.5,8.5 L8.5,8.5 L8.5,4.5 Z M17.75,4.5 L15.5,4.5 L15.5,8.5 L19.5,8.5 L19.5,6.25 C19.5,5.2835 18.7165,4.5 17.75,4.5 L17.75,4.5 Z M14,4.5 L10,4.5 L10,8.5 L14,8.5 L14,4.5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,3 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6.25 3C4.45507 3 3 4.45507 3 6.25V17.75C3 19.5449 4.45507 21 6.25 21H17.75C19.5449 21 21 19.5449 21 17.75V6.25C21 4.45507 19.5449 3 17.75 3H6.25ZM4.5 6.25C4.5 5.2835 5.2835 4.5 6.25 4.5H11V7.5H4.5V6.25ZM12.5 16.5H19.5V17.75C19.5 18.7165 18.7165 19.5 17.75 19.5H12.5V16.5ZM19.5 7.5H12.5V4.5H17.75C18.7165 4.5 19.5 5.2835 19.5 6.25V7.5ZM11 16.5V19.5H6.25C5.2835 19.5 4.5 18.7165 4.5 17.75V16.5H11ZM4.5 9H19.5V15H4.5V9Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 548 B |
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.5 10H11V14H12.5V10Z" fill="#212121"/>
|
||||
<path d="M3 6.25C3 4.45507 4.45507 3 6.25 3H17.75C19.5449 3 21 4.45507 21 6.25V17.75C21 19.5449 19.5449 21 17.75 21H6.25C4.45507 21 3 19.5449 3 17.75V6.25ZM6.25 4.5C5.2835 4.5 4.5 5.2835 4.5 6.25V7.5H11V4.5H6.25ZM19.5 16.5H12.5V19.5H17.75C18.7165 19.5 19.5 18.7165 19.5 17.75V16.5ZM19.5 6.25C19.5 5.2835 18.7165 4.5 17.75 4.5H12.5V7.5H19.5V6.25ZM4.5 16.5V17.75C4.5 18.7165 5.2835 19.5 6.25 19.5H11V16.5H4.5ZM4.5 15H19.5V9H4.5V15Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 602 B |
|
@ -0,0 +1,7 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M22 3.75C22 3.33579 21.6642 3 21.25 3L20.25 3C18.4551 3 17 4.45508 17 6.25V17.75C17 19.5449 18.4551 21 20.25 21H21.25C21.6642 21 22 20.6642 22 20.25C22 19.8358 21.6642 19.5 21.25 19.5H20.25C19.2835 19.5 18.5 18.7165 18.5 17.75V15.5H21.25C21.6642 15.5 22 15.1642 22 14.75C22 14.3358 21.6642 14 21.25 14H18.5V10H21.25C21.6642 10 22 9.66421 22 9.25C22 8.83579 21.6642 8.5 21.25 8.5H18.5V6.25C18.5 5.2835 19.2835 4.5 20.25 4.5H21.25C21.6642 4.5 22 4.16421 22 3.75Z" fill="#212121"/>
|
||||
<path d="M2 3.75C2 3.33579 2.33579 3 2.75 3L3.75 3C5.54493 3 7 4.45507 7 6.25L7 17.75C7 19.5449 5.54493 21 3.75 21H2.75C2.33579 21 2 20.6642 2 20.25C2 19.8358 2.33579 19.5 2.75 19.5H3.75C4.7165 19.5 5.5 18.7165 5.5 17.75L5.5 15.5H2.75C2.33579 15.5 2 15.1642 2 14.75C2 14.3358 2.33579 14 2.75 14H5.5L5.5 10H2.75C2.33579 10 2 9.66421 2 9.25C2 8.83579 2.33579 8.5 2.75 8.5H5.5L5.5 6.25C5.5 5.2835 4.7165 4.5 3.75 4.5H2.75C2.33579 4.5 2 4.16421 2 3.75Z" fill="#212121"/>
|
||||
<path d="M10.9393 12L9.46967 13.4697C9.17678 13.7626 9.17678 14.2374 9.46967 14.5303C9.76256 14.8232 10.2374 14.8232 10.5303 14.5303L12 13.0607L13.4697 14.5303C13.7626 14.8232 14.2374 14.8232 14.5303 14.5303C14.8232 14.2374 14.8232 13.7626 14.5303 13.4697L13.0607 12L14.5303 10.5303C14.8232 10.2374 14.8232 9.76256 14.5303 9.46967C14.2374 9.17678 13.7626 9.17678 13.4697 9.46967L12 10.9393L10.5303 9.46967C10.2374 9.17678 9.76256 9.17678 9.46967 9.46967C9.17678 9.76256 9.17678 10.2374 9.46967 10.5303L10.9393 12Z" fill="#212121"/>
|
||||
<path d="M11.25 8.72739C11.2758 8.75048 11.3011 8.77441 11.3258 8.79918L12 9.47335L12.6742 8.79917C12.6989 8.77441 12.7242 8.75048 12.75 8.72739V2.75C12.75 2.33579 12.4142 2 12 2C11.5858 2 11.25 2.33579 11.25 2.75L11.25 8.72739Z" fill="#212121"/>
|
||||
<path d="M11.25 15.5226V21.25C11.25 21.6642 11.5858 22 12 22C12.4142 22 12.75 21.6642 12.75 21.25V15.5226C12.7242 15.4995 12.6989 15.4756 12.6742 15.4508L12 14.7767L11.3258 15.4508C11.3011 15.4756 11.2758 15.4995 11.25 15.5226Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_table_delete_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_table_delete_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M17.5,12 C20.5376,12 23,14.4624 23,17.5 C23,20.5376 20.5376,23 17.5,23 C14.4624,23 12,20.5376 12,17.5 C12,14.4624 14.4624,12 17.5,12 Z M17.75,3 C19.5449,3 21,4.45507 21,6.25 L21,12.0218 C20.5368,11.7253 20.0335,11.4858 19.5,11.3135 L19.5,10 L15.5,10 L15.5,11.3135 C14.9665,11.4858 14.4632,11.7253 14,12.0218 L14,10 L10,10 L10,14 L12.0218,14 C11.7253,14.4632 11.4858,14.9665 11.3135,15.5 L10,15.5 L10,19.5 L11.3135,19.5 C11.4858,20.0335 11.7253,20.5368 12.0218,21 L6.25,21 C4.45507,21 3,19.5449 3,17.75 L3,6.25 C3,4.45507 4.45507,3 6.25,3 L17.75,3 Z M15.1464,15.1464 C14.9512,15.3417 14.9512,15.6583 15.1464,15.8536 L16.7929,17.5 L15.1464,19.1464 C14.9512,19.3417 14.9512,19.6583 15.1464,19.8536 C15.3417,20.0488 15.6583,20.0488 15.8536,19.8536 L17.5,18.2071 L19.1464,19.8536 C19.3417,20.0488 19.6583,20.0488 19.8536,19.8536 C20.0488,19.6583 20.0488,19.3417 19.8536,19.1464 L18.2071,17.5 L19.8536,15.8536 C20.0488,15.6583 20.0488,15.3417 19.8536,15.1464 C19.6583,14.9512 19.3417,14.9512 19.1464,15.1464 L17.5,16.7929 L15.8536,15.1464 C15.6583,14.9512 15.3417,14.9512 15.1464,15.1464 Z M8.5,15.5 L4.5,15.5 L4.5,17.75 C4.5,18.668175 5.20710875,19.4211925 6.10647256,19.4941988 L6.25,19.5 L8.5,19.5 L8.5,15.5 Z M8.5,10 L4.5,10 L4.5,14 L8.5,14 L8.5,10 Z M8.5,4.5 L6.25,4.5 C5.2835,4.5 4.5,5.2835 4.5,6.25 L4.5,8.5 L8.5,8.5 L8.5,4.5 Z M17.75,4.5 L15.5,4.5 L15.5,8.5 L19.5,8.5 L19.5,6.25 C19.5,5.331825 18.7928913,4.5788075 17.8935274,4.50580119 L17.75,4.5 Z M14,4.5 L10,4.5 L10,8.5 L14,8.5 L14,4.5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3.75 15.5C3.33579 15.5 3 15.1642 3 14.75V6.25C3 4.45508 4.45507 3 6.25 3H17.75C19.5449 3 21 4.45508 21 6.25V14.75C21 15.1642 20.6642 15.5 20.25 15.5L3.75 15.5ZM10 14H14V10L10 10V14ZM10 8.5L14 8.5V4.5L10 4.5V8.5ZM15.5 14H19.5V10H15.5V14ZM15.5 8.5H19.5V6.25C19.5 5.2835 18.7165 4.5 17.75 4.5L15.5 4.5V8.5ZM8.5 4.5L6.25 4.5C5.2835 4.5 4.5 5.2835 4.5 6.25L4.5 8.5H8.5V4.5ZM4.5 14H8.5V10H4.5L4.5 14Z" fill="#212121"/>
|
||||
<path d="M3.75 19.5C3.33579 19.5 3 19.8358 3 20.25C3 20.6642 3.33579 21 3.75 21H20.25C20.6642 21 21 20.6642 21 20.25C21 19.8358 20.6642 19.5 20.25 19.5H3.75Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 702 B |
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.5 3.75C4.5 3.33579 4.16421 3 3.75 3C3.33579 3 3 3.33579 3 3.75V20.25C3 20.6642 3.33579 21 3.75 21C4.16421 21 4.5 20.6642 4.5 20.25L4.5 3.75Z" fill="#212121"/>
|
||||
<path d="M8.5 3.75C8.5 3.33579 8.83579 3 9.25 3H17.75C19.5449 3 21 4.45507 21 6.25V17.75C21 19.5449 19.5449 21 17.75 21H9.25C8.83579 21 8.5 20.6642 8.5 20.25V3.75ZM10 10V14H14V10H10ZM10 15.5V19.5H14V15.5H10ZM15.5 15.5V19.5H17.75C18.7165 19.5 19.5 18.7165 19.5 17.75V15.5H15.5ZM15.5 10V14H19.5V10H15.5ZM19.5 8.5V6.25C19.5 5.2835 18.7165 4.5 17.75 4.5H15.5V8.5H19.5ZM10 4.5V8.5H14V4.5H10Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 679 B |
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M15.5 3.75C15.5 3.33579 15.1642 3 14.75 3H6.25C4.45508 3 3 4.45507 3 6.25V17.75C3 19.5449 4.45508 21 6.25 21H14.75C15.1642 21 15.5 20.6642 15.5 20.25V3.75ZM14 10V14H10V10H14ZM4.5 14V10H8.5V14H4.5ZM14 8.5H10V4.5H14V8.5ZM8.5 8.5H4.5V6.25C4.5 5.2835 5.2835 4.5 6.25 4.5H8.5V8.5ZM8.5 19.5H6.25C5.2835 19.5 4.5 18.7165 4.5 17.75V15.5H8.5V19.5ZM10 15.5H14V19.5H10V15.5Z" fill="#212121"/>
|
||||
<path d="M19.5 3.75C19.5 3.33579 19.8358 3 20.25 3C20.6642 3 21 3.33579 21 3.75V20.25C21 20.6642 20.6642 21 20.25 21C19.8358 21 19.5 20.6642 19.5 20.25V3.75Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 670 B |
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M20.25 4.5C20.6642 4.5 21 4.16421 21 3.75C21 3.33579 20.6642 3 20.25 3H3.75C3.33579 3 3 3.33579 3 3.75C3 4.16421 3.33579 4.5 3.75 4.5L20.25 4.5Z" fill="#212121"/>
|
||||
<path d="M20.25 8.5C20.6642 8.5 21 8.83579 21 9.25V17.75C21 19.5449 19.5449 21 17.75 21L6.25 21C4.45507 21 3 19.5449 3 17.75V9.25C3 8.83579 3.33579 8.5 3.75 8.5L20.25 8.5ZM14 10H10V14L14 14V10ZM8.5 10L4.5 10L4.5 14H8.5V10ZM8.5 15.5H4.5L4.5 17.75C4.5 18.7165 5.2835 19.5 6.25 19.5H8.5V15.5ZM14 15.5L10 15.5V19.5L14 19.5V15.5ZM15.5 19.5H17.75C18.7165 19.5 19.5 18.7165 19.5 17.75V15.5H15.5V19.5ZM19.5 10H15.5V14H19.5V10Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 712 B |
|
@ -0,0 +1,5 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3.75 15.5C3.33579 15.5 3 15.1642 3 14.75V6.25C3 4.45508 4.45507 3 6.25 3H17.75C19.5449 3 21 4.45508 21 6.25V14.75C21 15.1642 20.6642 15.5 20.25 15.5H15.9821C16.0529 15.0075 15.9144 14.4883 15.558 14.0874C15.1525 13.6312 14.562 13.4372 14 13.5178V10L10 10V13.5178C9.43797 13.4372 8.8475 13.6312 8.44205 14.0874C8.08563 14.4883 7.9471 15.0075 8.01793 15.5H3.75ZM10 8.5L14 8.5V4.5L10 4.5V8.5ZM19.5 14V10H15.5V14H19.5ZM15.5 8.5H19.5V6.25C19.5 5.2835 18.7165 4.5 17.75 4.5L15.5 4.5V8.5ZM8.5 4.5L6.25 4.5C5.2835 4.5 4.5 5.2835 4.5 6.25L4.5 8.5H8.5V4.5ZM4.5 14H8.5V10H4.5L4.5 14Z" fill="#212121"/>
|
||||
<path d="M3.75 19.5C3.33579 19.5 3 19.8358 3 20.25C3 20.6642 3.33579 21 3.75 21H20.25C20.6642 21 21 20.6642 21 20.25C21 19.8358 20.6642 19.5 20.25 19.5H3.75Z" fill="#212121"/>
|
||||
<path d="M9.18945 14.7517C9.46464 14.4421 9.93869 14.4143 10.2483 14.6894L11.25 15.5799V12.75C11.25 12.3358 11.5858 12 12 12C12.4142 12 12.75 12.3358 12.75 12.75V15.5799L13.7517 14.6894C14.0613 14.4143 14.5354 14.4421 14.8106 14.7517C15.0858 15.0613 15.0579 15.5354 14.7483 15.8106L12.4983 17.8106C12.2141 18.0631 11.7859 18.0631 11.5017 17.8106L9.25174 15.8106C8.94215 15.5354 8.91426 15.0613 9.18945 14.7517Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,5 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M20.25 4.5C20.6642 4.5 21 4.16421 21 3.75C21 3.33579 20.6642 3 20.25 3H3.75C3.33579 3 3 3.33578 3 3.75C3 4.16421 3.33579 4.5 3.75 4.5L20.25 4.5Z" fill="#212121"/>
|
||||
<path d="M20.25 8.5C20.6642 8.5 21 8.83579 21 9.25V17.75C21 19.5449 19.5449 21 17.75 21L6.25 21C4.45507 21 3 19.5449 3 17.75V9.25C3 8.83579 3.33579 8.5 3.75 8.5L8.01789 8.5C7.94707 8.99246 8.0856 9.51167 8.44202 9.91264C8.84748 10.3688 9.43795 10.5628 10 10.4822V14L14 14V10.4822C14.562 10.5628 15.1525 10.3688 15.5579 9.91264C15.9144 9.51167 16.0529 8.99246 15.9821 8.5L20.25 8.5ZM8.5 10L4.5 10L4.5 14H8.5V10ZM8.5 15.5H4.5L4.5 17.75C4.5 18.7165 5.2835 19.5 6.25 19.5H8.5V15.5ZM14 19.5V15.5L10 15.5V19.5L14 19.5ZM15.5 19.5H17.75C18.7165 19.5 19.5 18.7165 19.5 17.75V15.5H15.5V19.5ZM15.5 10V14H19.5V10H15.5Z" fill="#212121"/>
|
||||
<path d="M14.8105 9.24827C14.5354 9.55786 14.0613 9.58574 13.7517 9.31056L12.75 8.42014V11.25C12.75 11.6642 12.4142 12 12 12C11.5858 12 11.25 11.6642 11.25 11.25V8.42013L10.2483 9.31056C9.93868 9.58574 9.46462 9.55786 9.18944 9.24827C8.91425 8.93869 8.94213 8.46463 9.25172 8.18944L11.5017 6.18944C11.7859 5.93685 12.2141 5.93685 12.4983 6.18944L14.7483 8.18944C15.0579 8.46463 15.0857 8.93869 14.8105 9.24827Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,7 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3.75 2C3.33579 2 3 2.33579 3 2.75L3 3.75C3 5.54493 4.45508 7 6.25 7L17.75 7C19.5449 7 21 5.54493 21 3.75V2.75C21 2.33579 20.6642 2 20.25 2C19.8358 2 19.5 2.33579 19.5 2.75V3.75C19.5 4.7165 18.7165 5.5 17.75 5.5H15.5V2.75C15.5 2.33579 15.1642 2 14.75 2C14.3358 2 14 2.33579 14 2.75V5.5L10 5.5V2.75C10 2.33579 9.66421 2 9.25 2C8.83579 2 8.5 2.33579 8.5 2.75V5.5H6.25C5.2835 5.5 4.5 4.7165 4.5 3.75V2.75C4.5 2.33579 4.16421 2 3.75 2Z" fill="#212121"/>
|
||||
<path d="M3.75 22C3.33579 22 3 21.6642 3 21.25V20.25C3 18.4551 4.45507 17 6.25 17L17.75 17C19.5449 17 21 18.4551 21 20.25V21.25C21 21.6642 20.6642 22 20.25 22C19.8358 22 19.5 21.6642 19.5 21.25V20.25C19.5 19.2835 18.7165 18.5 17.75 18.5H15.5V21.25C15.5 21.6642 15.1642 22 14.75 22C14.3358 22 14 21.6642 14 21.25V18.5H10V21.25C10 21.6642 9.66421 22 9.25 22C8.83579 22 8.5 21.6642 8.5 21.25V18.5H6.25C5.2835 18.5 4.5 19.2835 4.5 20.25V21.25C4.5 21.6642 4.16421 22 3.75 22Z" fill="#212121"/>
|
||||
<path d="M12 13.0607L13.4697 14.5303C13.7626 14.8232 14.2374 14.8232 14.5303 14.5303C14.8232 14.2374 14.8232 13.7626 14.5303 13.4697L13.0607 12L14.5303 10.5303C14.8232 10.2374 14.8232 9.76256 14.5303 9.46967C14.2374 9.17678 13.7626 9.17678 13.4697 9.46967L12 10.9393L10.5303 9.46967C10.2374 9.17678 9.76256 9.17678 9.46967 9.46967C9.17678 9.76256 9.17678 10.2374 9.46967 10.5303L10.9393 12L9.46967 13.4697C9.17678 13.7626 9.17678 14.2374 9.46967 14.5303C9.76256 14.8232 10.2374 14.8232 10.5303 14.5303L12 13.0607Z" fill="#212121"/>
|
||||
<path d="M8.72739 12.75C8.75048 12.7242 8.77441 12.6989 8.79918 12.6742L9.47335 12L8.79917 11.3258C8.77441 11.3011 8.75048 11.2758 8.72739 11.25H2.75C2.33579 11.25 2 11.5858 2 12C2 12.4142 2.33579 12.75 2.75 12.75L8.72739 12.75Z" fill="#212121"/>
|
||||
<path d="M15.5226 12.75H21.25C21.6642 12.75 22 12.4142 22 12C22 11.5858 21.6642 11.25 21.25 11.25H15.5226C15.4995 11.2758 15.4756 11.3011 15.4508 11.3258L14.7767 12L15.4508 12.6742C15.4756 12.6989 15.4995 12.7242 15.5226 12.75Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_table_settings_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_table_settings_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M17.5001,12 C17.6956333,12 17.8886778,12.0109333 18.0787296,12.032237 L18.3615,12.0719 L18.5342,12.7878 C18.7908348,13.8518348 19.849775,14.5028684 20.9017658,14.2736562 L21.0451,14.2369 L21.647,14.0591 C21.9488333,14.4480167 22.2005972,14.8803361 22.3922222,15.3455259 L22.4999,15.6285 L22.0526,16.0588 C21.275785,16.80626 21.2369442,18.024825 21.9360777,18.8193955 L22.0526,18.9412 L22.4999,19.3715 C22.3327333,19.8494167 22.1034139,20.2965694 21.8220111,20.7024259 L21.647,20.9409 L21.0451,20.7631 C19.995413,20.4529 18.9019922,21.0441843 18.5740926,22.0697082 L18.5342,22.2122 L18.3615,22.9281 C18.0811,22.9754 17.7934,23 17.5001,23 C17.3045667,23 17.1114778,22.9890667 16.9213963,22.967763 L16.6386,22.9281 L16.4659,22.2122 C16.2092652,21.1481652 15.150325,20.4971316 14.0983342,20.7263438 L13.955,20.7631 L13.3531,20.9409 C13.0512667,20.5519833 12.7995028,20.1196639 12.6078778,19.6544741 L12.5002,19.3715 L12.9475,18.9412 C13.724315,18.19374 13.7631557,16.975175 13.0640222,16.1806045 L12.9475,16.0588 L12.5002,15.6285 C12.6673667,15.1505833 12.8966861,14.7034306 13.1780889,14.2975741 L13.3531,14.0591 L13.955,14.2369 C15.004687,14.5471 16.0981078,13.9558157 16.4260074,12.9302918 L16.4659,12.7878 L16.6386,12.0719 C16.919,12.0246 17.2068,12 17.5001,12 Z M17.75,3 C19.5449,3 21,4.45507 21,6.25 L21,12.0218 C20.5368,11.7253 20.0335,11.4858 19.5,11.3135 L19.5,10 L15.5,10 L15.5,11.3135 C14.9665,11.4858 14.4632,11.7253 14,12.0218 L14,10 L10,10 L10,14 L12.0218,14 C11.7253,14.4632 11.4858,14.9665 11.3135,15.5 L10,15.5 L10,19.5 L11.3135,19.5 C11.4858,20.0335 11.7253,20.5368 12.0218,21 L6.25,21 C4.45507,21 3,19.5449 3,17.75 L3,6.25 C3,4.45507 4.45507,3 6.25,3 L17.75,3 Z M8.5,15.5 L4.5,15.5 L4.5,17.75 C4.5,18.668175 5.20710875,19.4211925 6.10647256,19.4941988 L6.25,19.5 L8.5,19.5 L8.5,15.5 Z M17.5001,16 C16.6994,16 16.0504,16.6716 16.0504,17.5 C16.0504,18.3284 16.6994,19 17.5001,19 C18.3007,19 18.9497,18.3284 18.9497,17.5 C18.9497,16.6716 18.3007,16 17.5001,16 Z M8.5,10 L4.5,10 L4.5,14 L8.5,14 L8.5,10 Z M8.5,4.5 L6.25,4.5 C5.2835,4.5 4.5,5.2835 4.5,6.25 L4.5,8.5 L8.5,8.5 L8.5,4.5 Z M17.75,4.5 L15.5,4.5 L15.5,8.5 L19.5,8.5 L19.5,6.25 C19.5,5.331825 18.7928913,4.5788075 17.8935274,4.50580119 L17.75,4.5 Z M14,4.5 L10,4.5 L10,8.5 L14,8.5 L14,4.5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_text_align_center_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_align_center_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M17.25,18 C17.6642,18 18,18.3358 18,18.75 C18,19.1642 17.6642,19.5 17.25,19.5 L6.75,19.5 C6.33579,19.5 6,19.1642 6,18.75 C6,18.3358 6.33579,18 6.75,18 L17.25,18 Z M21.25,11.5 C21.6642,11.5 22,11.8358 22,12.25 C22,12.6296833 21.7178347,12.9434889 21.3517677,12.9931531 L21.25,13 L2.75,13 C2.33579,13 2,12.6642 2,12.25 C2,11.8703167 2.28215688,11.5565111 2.64823019,11.5068469 L2.75,11.5 L21.25,11.5 Z M19.25,5 C19.6642,5 20,5.33579 20,5.75 C20,6.16421 19.6642,6.5 19.25,6.5 L4.75,6.5 C4.33579,6.5 4,6.16421 4,5.75 C4,5.33579 4.33579,5 4.75,5 L19.25,5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_text_align_justify_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_align_justify_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M21.25,18 C21.6642,18 22,18.3358 22,18.75 C22,19.1642 21.6642,19.5 21.25,19.5 L2.75,19.5 C2.33579,19.5 2,19.1642 2,18.75 C2,18.3358 2.33579,18 2.75,18 L21.25,18 Z M21.25,11.5 C21.6642,11.5 22,11.8358 22,12.25 C22,12.6296833 21.7178347,12.9434889 21.3517677,12.9931531 L21.25,13 L2.75,13 C2.33579,13 2,12.6642 2,12.25 C2,11.8703167 2.28215688,11.5565111 2.64823019,11.5068469 L2.75,11.5 L21.25,11.5 Z M21.25,5 C21.6642,5 22,5.33579 22,5.75 C22,6.16421 21.6642,6.5 21.25,6.5 L2.75,6.5 C2.33579,6.5 2,6.16421 2,5.75 C2,5.33579 2.33579,5 2.75,5 L21.25,5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_text_align_left_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_align_left_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M13.25,18 C13.6642,18 14,18.3358 14,18.75 C14,19.1642 13.6642,19.5 13.25,19.5 L2.75,19.5 C2.33579,19.5 2,19.1642 2,18.75 C2,18.3358 2.33579,18 2.75,18 L13.25,18 Z M21.25,11.5 C21.6642,11.5 22,11.8358 22,12.25 C22,12.6296833 21.7178347,12.9434889 21.3517677,12.9931531 L21.25,13 L2.75,13 C2.33579,13 2,12.6642 2,12.25 C2,11.8703167 2.28215688,11.5565111 2.64823019,11.5068469 L2.75,11.5 L21.25,11.5 Z M18.25,5 C18.6642,5 19,5.33579 19,5.75 C19,6.16421 18.6642,6.5 18.25,6.5 L2.75,6.5 C2.33579,6.5 2,6.16421 2,5.75 C2,5.33579 2.33579,5 2.75,5 L18.25,5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_text_align_right_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_align_right_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M21.25,18 C21.6642,18 22,18.3358 22,18.75 C22,19.1642 21.6642,19.5 21.25,19.5 L10.75,19.5 C10.3358,19.5 10,19.1642 10,18.75 C10,18.3358 10.3358,18 10.75,18 L21.25,18 Z M21.25,11.5 C21.6642,11.5 22,11.8358 22,12.25 C22,12.6296833 21.7178347,12.9434889 21.3517677,12.9931531 L21.25,13 L2.75,13 C2.33579,13 2,12.6642 2,12.25 C2,11.8703167 2.28215688,11.5565111 2.64823019,11.5068469 L2.75,11.5 L21.25,11.5 Z M21.25,5 C21.6642,5 22,5.33579 22,5.75 C22,6.16421 21.6642,6.5 21.25,6.5 L5.75,6.5 C5.33579,6.5 5,6.16421 5,5.75 C5,5.33579 5.33579,5 5.75,5 L21.25,5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_text_bold_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_bold_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M12.38,4.00006 C15.0166,4.00006 17,6.18217 17,8.62546 C17,9.6021 16.6833,10.5368 16.1346,11.307 C17.2115,12.1341 18,13.4275 18,15.1201 C18,18.2315 15.3015,20.0001 13.12,20.0001 L8,20.0001 C7.17157,20.0001 6.5,19.3285 6.5,18.5001 L6.49658977,5.50088 C6.49637,5.10291 6.65431,4.72117 6.93564,4.43969 C7.21697,4.15821 7.59862,4.00006 7.99658977,4.00006 L12.38,4.00006 Z M13.12,13.25 L9.5,13.25 L9.5,17.0001 L13.12,17.0001 C13.9931,17.0001 15,16.2465 15,15.1201 C15,13.9902 14.0253,13.25 13.12,13.25 L13.12,13.25 Z M12.38,7.00006 L9.49741,7.00006 L9.49918,10.25 L12.38,10.25 C13.2829,10.25 14,9.49057 14,8.62546 C14,7.76006 13.2819,7.00006 12.38,7.00006 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_text_bullet_list_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_bullet_list_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M3.24928905,16 C3.93925235,16 4.49857811,16.5593258 4.49857811,17.2492891 C4.49857811,17.9392523 3.93925235,18.4985781 3.24928905,18.4985781 C2.55932576,18.4985781 2,17.9392523 2,17.2492891 C2,16.5593258 2.55932576,16 3.24928905,16 Z M6.75,16.5 L21.25,16.5 C21.6642136,16.5 22,16.8357864 22,17.25 C22,17.6296958 21.7178461,17.943491 21.3517706,17.9931534 L21.25,18 L6.75,18 C6.33578644,18 6,17.6642136 6,17.25 C6,16.8703042 6.28215388,16.556509 6.64822944,16.5068466 L6.75,16.5 L21.25,16.5 L6.75,16.5 Z M3.24928905,11 C3.93925235,11 4.49857811,11.5593258 4.49857811,12.2492891 C4.49857811,12.9392523 3.93925235,13.4985781 3.24928905,13.4985781 C2.55932576,13.4985781 2,12.9392523 2,12.2492891 C2,11.5593258 2.55932576,11 3.24928905,11 Z M6.75,11.5 L21.25,11.5 C21.6642136,11.5 22,11.8357864 22,12.25 C22,12.6296958 21.7178461,12.943491 21.3517706,12.9931534 L21.25,13 L6.75,13 C6.33578644,13 6,12.6642136 6,12.25 C6,11.8703042 6.28215388,11.556509 6.64822944,11.5068466 L6.75,11.5 L21.25,11.5 L6.75,11.5 Z M3.24928905,6 C3.93925235,6 4.49857811,6.55932576 4.49857811,7.24928905 C4.49857811,7.93925235 3.93925235,8.49857811 3.24928905,8.49857811 C2.55932576,8.49857811 2,7.93925235 2,7.24928905 C2,6.55932576 2.55932576,6 3.24928905,6 Z M6.75,6.5 L21.25,6.5 C21.6642136,6.5 22,6.83578644 22,7.25 C22,7.62969577 21.7178461,7.94349096 21.3517706,7.99315338 L21.25,8 L6.75,8 C6.33578644,8 6,7.66421356 6,7.25 C6,6.87030423 6.28215388,6.55650904 6.64822944,6.50684662 L6.75,6.5 L21.25,6.5 L6.75,6.5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_text_bullet_list_square_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_bullet_list_square_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M18.75,3 C19.940825,3 20.9156417,3.92516222 20.994809,5.09595127 L21,5.25 L21,18.75 C21,19.940825 20.074801,20.9156417 18.9040441,20.994809 L18.75,21 L5.25,21 C4.05913667,21 3.08435514,20.074801 3.00519082,18.9040441 L3,18.75 L3,5.25 C3,4.05913667 3.92516222,3.08435514 5.09595127,3.00519082 L5.25,3 L18.75,3 Z M18.75,4.5 L5.25,4.5 C4.8703075,4.5 4.55650958,4.78215688 4.50684668,5.14823019 L4.5,5.25 L4.5,18.75 C4.5,19.1296833 4.78215688,19.4434889 5.14823019,19.4931531 L5.25,19.5 L18.75,19.5 C19.1296833,19.5 19.4434889,19.2178347 19.4931531,18.8517677 L19.5,18.75 L19.5,5.25 C19.5,4.8703075 19.2178347,4.55650958 18.8517677,4.50684668 L18.75,4.5 Z M7.75,14.75 C8.30228,14.75 8.75,15.1977 8.75,15.75 C8.75,16.3023 8.30228,16.75 7.75,16.75 C7.19772,16.75 6.75,16.3023 6.75,15.75 C6.75,15.1977 7.19772,14.75 7.75,14.75 Z M16.7499,15 C17.1642,15 17.4999,15.3358 17.4999,15.75 C17.4999,16.1296833 17.2178188,16.4434889 16.8516887,16.4931531 L16.7499,16.5 L11.2501,16.5 C10.8358,16.5 10.5001,16.1642 10.5001,15.75 C10.5001,15.3703167 10.7821813,15.0565111 11.1483113,15.0068469 L11.2501,15 L16.7499,15 Z M7.75,11 C8.30228,11 8.75,11.4477 8.75,12 C8.75,12.5523 8.30228,13 7.75,13 C7.19772,13 6.75,12.5523 6.75,12 C6.75,11.4477 7.19772,11 7.75,11 Z M16.7499,11.25 C17.1642,11.25 17.4999,11.5858 17.4999,12 C17.4999,12.4142 17.1642,12.75 16.7499,12.75 L11.2501,12.75 C10.8358,12.75 10.5001,12.4142 10.5001,12 C10.5001,11.5858 10.8358,11.25 11.2501,11.25 L16.7499,11.25 Z M7.75,7.25 C8.30228,7.25 8.75,7.69772 8.75,8.25 C8.75,8.80228 8.30228,9.25 7.75,9.25 C7.19772,9.25 6.75,8.80228 6.75,8.25 C6.75,7.69772 7.19772,7.25 7.75,7.25 Z M16.75,7.5 C17.1642,7.5 17.5,7.83579 17.5,8.25 C17.5,8.66421 17.1642,9 16.75,9 L11.25,9 C10.8358,9 10.5,8.66421 10.5,8.25 C10.5,7.83579 10.8358,7.5 11.25,7.5 L16.75,7.5 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
|
@ -0,0 +1,5 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2.21151 13.8205C2.35815 13.9402 2.54146 14 2.76142 14C3.12239 14 3.37056 13.8124 3.50592 13.4371L4.58037 10.5167H9.41117L10.4941 13.4371C10.6294 13.8124 10.8776 14 11.2386 14C11.4585 14 11.639 13.9402 11.78 13.8205C11.9267 13.6954 12 13.5404 12 13.3555C12 13.2468 11.969 13.1108 11.9069 12.9477L7.97293 2.70156C7.79244 2.23385 7.47377 2 7.01692 2C6.53187 2 6.1991 2.23657 6.01861 2.70972L2.09306 12.9477C2.03102 13.1108 2 13.2468 2 13.3555C2 13.5404 2.0705 13.6954 2.21151 13.8205ZM8.9797 9.26852H5.0203L6.97462 3.90075H7.02538L8.9797 9.26852Z" fill="#212121"/>
|
||||
<path d="M13 13.1053L14.7485 11.3568C14.5186 10.8745 14.4037 10.3005 14.4037 9.63489C14.4037 8.70453 14.6308 7.95267 15.0852 7.37931C15.545 6.80054 16.1346 6.51116 16.854 6.51116C17.6004 6.51116 18.19 6.79243 18.6227 7.35497C18.9793 7.81848 19.1889 8.41603 19.2517 9.14762C19.6763 9.28718 20.0754 9.52574 20.4131 9.86347L20.6987 10.149C20.7102 9.98232 20.716 9.81094 20.716 9.63489C20.716 8.31508 20.3888 7.25761 19.7343 6.46247C19.0798 5.66734 18.2197 5.26978 17.1542 5.26978C16.5646 5.26978 16.0318 5.40771 15.5558 5.68357C15.0852 5.95943 14.7147 6.34077 14.4442 6.82759H14.4118V2.75456C14.4118 2.53279 14.3442 2.35159 14.2089 2.21095C14.0791 2.07032 13.9114 2 13.7059 2C13.5003 2 13.33 2.07032 13.1947 2.21095C13.0649 2.35159 13 2.53279 13 2.75456V13.1053Z" fill="#212121"/>
|
||||
<path d="M16.9815 21.5001H20.0019C20.4161 21.5001 20.7519 21.8358 20.7519 22.2501C20.7519 22.6643 20.4161 23.0001 20.0019 23.0001H14.5005L14.5029 22.9927C14.0622 22.9544 13.6321 22.7667 13.2949 22.4296L10.571 19.7056C9.80965 18.9443 9.81042 17.7091 10.5727 16.9468L16.9473 10.5723C17.7095 9.80999 18.9447 9.80923 19.706 10.5706L22.43 13.2945C23.1913 14.0559 23.1906 15.291 22.4283 16.0533L16.9815 21.5001ZM18.0079 11.6329L13.851 15.7899L17.2107 19.1495L21.3676 14.9926C21.5453 14.8149 21.5436 14.5295 21.3693 14.3552L18.6454 11.6312C18.471 11.4569 18.1856 11.4552 18.0079 11.6329ZM12.7903 16.8505L11.6334 18.0075C11.4556 18.1852 11.4573 18.4706 11.6317 18.6449L14.3556 21.3689C14.5299 21.5432 14.8153 21.5449 14.9931 21.3672L16.15 20.2102L12.7903 16.8505Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_text_color_24_filled</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_color_24_filled" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M17.75,14.500543 C18.9926407,14.500543 20,15.5079023 20,16.750543 L20,19.7503837 C20,20.9930243 18.9926407,22.0003837 17.75,22.0003837 L5.25,22.0003837 C4.00735931,22.0003837 3,20.9930243 3,19.7503837 L3,16.750543 C3,15.5079023 4.00735931,14.500543 5.25,14.500543 L17.75,14.500543 Z M7.05252224,11.9694299 L10.8061334,2.47427411 C11.0415216,1.87883471 11.8486376,1.84414583 12.1508398,2.36975012 L12.2013229,2.47486675 L15.9477118,11.9753527 C16.0996637,12.3606883 15.9104688,12.7962458 15.5251332,12.9481977 C15.171909,13.087487 14.7764843,12.9401182 14.5959915,12.6177829 L14.5522882,12.5256192 L13.556,10 L9.443,10 L8.44747776,12.5208817 C8.30788849,12.8739875 7.9301318,13.0620782 7.57143476,12.9736808 L7.47427411,12.9426336 C7.1211683,12.8030443 6.93307758,12.4252876 7.02147501,12.0665906 L7.05252224,11.9694299 L10.8061334,2.47427411 L7.05252224,11.9694299 Z M11.5027436,4.79226402 L10.036,8.5 L12.964,8.5 L11.5027436,4.79226402 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_text_color_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_color_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M17.75,14.500543 C18.9926407,14.500543 20,15.5079023 20,16.750543 L20,19.7503837 C20,20.9930243 18.9926407,22.0003837 17.75,22.0003837 L5.25,22.0003837 C4.00735931,22.0003837 3,20.9930243 3,19.7503837 L3,16.750543 C3,15.5079023 4.00735931,14.500543 5.25,14.500543 L17.75,14.500543 Z M17.75,16.000543 L5.25,16.000543 C4.83578644,16.000543 4.5,16.3363294 4.5,16.750543 L4.5,19.7503837 C4.5,20.1645972 4.83578644,20.5003837 5.25,20.5003837 L17.75,20.5003837 C18.1642136,20.5003837 18.5,20.1645972 18.5,19.7503837 L18.5,16.750543 C18.5,16.3363294 18.1642136,16.000543 17.75,16.000543 Z M7.05252224,11.9694299 L10.8061334,2.47427411 C11.0415216,1.87883471 11.8486376,1.84414583 12.1508398,2.36975012 L12.2013229,2.47486675 L15.9477118,11.9753527 C16.0996637,12.3606883 15.9104688,12.7962458 15.5251332,12.9481977 C15.171909,13.087487 14.7764843,12.9401182 14.5959915,12.6177829 L14.5522882,12.5256192 L13.556,10 L9.443,10 L8.44747776,12.5208817 C8.30788849,12.8739875 7.9301318,13.0620782 7.57143476,12.9736808 L7.47427411,12.9426336 C7.1211683,12.8030443 6.93307758,12.4252876 7.02147501,12.0665906 L7.05252224,11.9694299 L10.8061334,2.47427411 L7.05252224,11.9694299 Z M11.5027436,4.79226402 L10.036,8.5 L12.964,8.5 L11.5027436,4.79226402 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_text_indent_decrease_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_indent_decrease_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M17.75,16 C18.1642136,16 18.5,16.3357864 18.5,16.75 C18.5,17.1642136 18.1642136,17.5 17.75,17.5 L8.75,17.5 C8.33578644,17.5 8,17.1642136 8,16.75 C8,16.3357864 8.33578644,16 8.75,16 L17.75,16 Z M2.71966991,11.2196699 L4.71966991,9.21966991 C5.01256313,8.9267767 5.48743687,8.9267767 5.78033009,9.21966991 C6.04659665,9.48593648 6.0708027,9.90260016 5.85294824,10.1962117 L5.78033009,10.2803301 L4.31066017,11.75 L5.78033009,13.2196699 C6.0732233,13.5125631 6.0732233,13.9874369 5.78033009,14.2803301 C5.51406352,14.5465966 5.09739984,14.5708027 4.80378835,14.3529482 L4.71966991,14.2803301 L2.71966991,12.2803301 C2.45340335,12.0140635 2.4291973,11.5973998 2.64705176,11.3037883 L2.71966991,11.2196699 L4.71966991,9.21966991 L2.71966991,11.2196699 Z M20.75,11 C21.1642136,11 21.5,11.3357864 21.5,11.75 C21.5,12.1642136 21.1642136,12.5 20.75,12.5 L8.75,12.5 C8.33578644,12.5 8,12.1642136 8,11.75 C8,11.3357864 8.33578644,11 8.75,11 L20.75,11 Z M17.75,6 C18.1642136,6 18.5,6.33578644 18.5,6.75 C18.5,7.16421356 18.1642136,7.5 17.75,7.5 L8.75,7.5 C8.33578644,7.5 8,7.16421356 8,6.75 C8,6.33578644 8.33578644,6 8.75,6 L17.75,6 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_text_indent_increase_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_indent_increase_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M17.75,16 C18.1642136,16 18.5,16.3357864 18.5,16.75 C18.5,17.1642136 18.1642136,17.5 17.75,17.5 L8.75,17.5 C8.33578644,17.5 8,17.1642136 8,16.75 C8,16.3357864 8.33578644,16 8.75,16 L17.75,16 Z M2.71966991,9.21966991 C2.98593648,8.95340335 3.40260016,8.9291973 3.69621165,9.14705176 L3.78033009,9.21966991 L5.78033009,11.2196699 C6.04659665,11.4859365 6.0708027,11.9026002 5.85294824,12.1962117 L5.78033009,12.2803301 L3.78033009,14.2803301 C3.48743687,14.5732233 3.01256313,14.5732233 2.71966991,14.2803301 C2.45340335,14.0140635 2.4291973,13.5973998 2.64705176,13.3037883 L2.71966991,13.2196699 L4.18933983,11.75 L2.71966991,10.2803301 C2.4267767,9.98743687 2.4267767,9.51256313 2.71966991,9.21966991 Z M20.75,11 C21.1642136,11 21.5,11.3357864 21.5,11.75 C21.5,12.1642136 21.1642136,12.5 20.75,12.5 L8.75,12.5 C8.33578644,12.5 8,12.1642136 8,11.75 C8,11.3357864 8.33578644,11 8.75,11 L20.75,11 Z M17.75,6 C18.1642136,6 18.5,6.33578644 18.5,6.75 C18.5,7.16421356 18.1642136,7.5 17.75,7.5 L8.75,7.5 C8.33578644,7.5 8,7.16421356 8,6.75 C8,6.33578644 8.33578644,6 8.75,6 L17.75,6 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
|
||||
<title>ic_fluent_text_italic_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-System-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_italic_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M9.75,4 L18.2535371,4 C18.6674911,4 19.003067,4.33564847 19.003067,4.74969185 C19.003067,5.12923161 18.72109,5.44289788 18.3552439,5.4925399 L18.2535371,5.4993837 L15.056067,5.499 L10.036067,18.5 L14.2488227,18.5 C14.6282805,18.5 14.941879,18.7822969 14.9915103,19.1482652 L14.9983526,19.25 C14.9983526,19.6295398 14.7163756,19.943465 14.3505295,19.9931501 L14.2488227,20 L4.74953181,20 C4.33557788,20 4.00306702,19.6640434 4.00306702,19.25 C4.00306702,18.8704602 4.28246851,18.556535 4.64788535,18.5068499 L4.74953181,18.5 L8.43406702,18.5 L8.45532362,18.4348625 L13.449067,5.499 L9.75,5.4993837 C9.37054224,5.4993837 9.05654871,5.21734575 9.00685157,4.85142059 L9,4.74969185 C9,4.37015209 9.28237205,4.05648582 9.64828398,4.0068438 L9.75,4 L18.2535371,4 L9.75,4 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,8 @@
|
|||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.94272 3.00005C5.15176 3.00298 5.33691 3.13579 5.40683 3.33281L7.18103 8.33281C7.27338 8.59307 7.13727 8.87896 6.87702 8.97124C6.61676 9.06353 6.33093 8.92754 6.23859 8.66729L6.0018 8.00005H3.72983L3.46643 8.68047C3.36673 8.93804 3.07715 9.06597 2.81964 8.96636C2.5621 8.86675 2.43417 8.57695 2.53384 8.31963L4.46933 3.31963C4.5448 3.12456 4.73364 2.99712 4.94272 3.00005ZM4.11694 7.00005H5.647L4.91522 4.93779L4.11694 7.00005Z" fill="#212121"/>
|
||||
<path d="M8.50025 3.00005H10.0031C10.1654 3.00005 10.6055 3.00005 11.0111 3.22808C11.2253 3.34868 11.4286 3.5313 11.5747 3.79839C11.7195 4.06279 11.7936 4.38286 11.7936 4.75884C11.7936 5.21441 11.6695 5.56939 11.4732 5.83599C11.6219 5.94194 11.7606 6.08159 11.8716 6.26397C12.0344 6.5313 12.118 6.85796 12.118 7.24175C12.118 7.99321 11.7656 8.46953 11.3196 8.72881C10.9124 8.96538 10.4681 9.00029 10.25 9.00029L8.5 9.00005C8.22385 9.00005 8 8.77617 8 8.50005V3.50005C8 3.22393 8.22409 3.00005 8.50025 3.00005ZM10.0002 4.00005H9V5.50005H10.0236C10.1442 5.50005 10.3544 5.4771 10.5184 5.37749C10.6432 5.30181 10.7936 5.15581 10.7936 4.75884C10.7936 4.51397 10.7458 4.3665 10.6976 4.27861C10.6508 4.19316 10.5903 4.13872 10.5209 4.09966C10.3616 4.01006 10.1578 4.00005 10.0002 4.00005ZM9 6.50005V8.00029H10.25C10.39 8.00029 10.6296 7.97319 10.817 7.86431C10.9655 7.77788 11.118 7.62505 11.118 7.24175C11.118 7.10527 11.1013 7.00127 11.0775 6.92217C11.0669 6.88652 11.0548 6.85601 11.0423 6.82964C11.0342 6.81279 11.0258 6.79766 11.0175 6.78398C10.9683 6.70317 10.9008 6.64653 10.8142 6.60356C10.6188 6.50689 10.3729 6.50029 10.1857 6.50029H9.37146L9.35831 6.50005H9Z" fill="#212121"/>
|
||||
<path d="M17.4081 4.5291C17.162 3.84307 16.8042 3.4229 16.3545 3.20122C15.9449 2.99956 15.5215 2.99981 15.2464 3.00005H15.2188C14.6654 3.00005 14.2248 3.18975 13.892 3.48711C13.5697 3.7752 13.371 4.14312 13.2464 4.47686C13.1211 4.81304 13.0605 5.1419 13.0307 5.38189C13.0156 5.50298 13.008 5.60503 13.0041 5.67778C13.0021 5.7144 13.0011 5.74395 13.0006 5.76519L13.0001 5.79082L13 5.79888L13 5.80156V5.825C12.9999 6.2083 12.9997 6.91045 13.2491 7.54912C13.3796 7.88359 13.5844 8.21807 13.9063 8.48467C14.2311 8.75347 14.6477 8.92998 15.1632 8.9876C15.5798 9.03399 16.8262 9.00103 17.3933 7.74224C17.5068 7.49053 17.3947 7.19439 17.1429 7.0811C16.8911 6.96758 16.5951 7.07964 16.4816 7.33159C16.1894 7.98027 15.5516 8.02471 15.2742 7.9937C14.9304 7.95537 14.7025 7.84551 14.5439 7.71416C14.3824 7.58062 14.2649 7.40142 14.1806 7.1856C14.005 6.73565 14 6.20415 14 5.80278L14.0003 5.79009C14.0006 5.77764 14.0013 5.75762 14.0027 5.73101C14.0055 5.67803 14.0113 5.5999 14.023 5.50518C14.0469 5.31328 14.0938 5.06646 14.1833 4.82647C14.2736 4.58452 14.3972 4.37676 14.5583 4.23296C14.7089 4.09819 14.9128 4.00005 15.2188 4.00005C15.5222 4.00005 15.7284 4.00762 15.9125 4.09819C16.0704 4.17607 16.2832 4.35479 16.4668 4.86675C16.5601 5.12651 16.8463 5.26177 17.1063 5.16851C17.3662 5.07524 17.5013 4.78887 17.4081 4.5291Z" fill="#212121"/>
|
||||
<path d="M14.1967 12.2046C14.0737 12.313 14.0084 12.4495 13.9807 12.5464C13.9048 12.8121 13.6281 12.9656 13.3626 12.8899C13.0971 12.814 12.9433 12.5374 13.0191 12.2718C13.0866 12.0354 13.2375 11.7173 13.5352 11.4546C13.8425 11.1836 14.2748 11 14.846 11C16.0138 11 16.6922 11.8545 16.6922 12.6365C16.6922 12.9397 16.6338 13.4124 16.3123 13.8169C16.2696 13.8707 16.2234 13.9217 16.1737 13.97C16.2098 14.0005 16.245 14.033 16.279 14.0677C16.3293 14.1192 16.377 14.1756 16.421 14.2374C16.5965 14.4837 16.6922 14.7859 16.6922 15.1365C16.6922 15.7657 16.4796 16.2584 16.0941 16.5838C15.7236 16.8965 15.2583 17 14.846 17C14.4592 17 14.0723 16.9358 13.7372 16.7237C13.3926 16.5054 13.1641 16.1702 13.0249 15.7474C12.9386 15.4849 13.0813 15.2024 13.3436 15.116C13.6059 15.0296 13.8885 15.1724 13.9749 15.4346C14.0182 15.5662 14.0674 15.6619 14.119 15.7327L14.1339 15.7525C14.1446 15.7659 14.1554 15.7784 14.1662 15.7901L14.1813 15.8057L14.1979 15.8218C14.2227 15.8445 14.2475 15.8631 14.2722 15.8787C14.3102 15.9029 14.3549 15.9244 14.4084 15.9424C14.5147 15.9783 14.6555 16 14.846 16C15.1069 16 15.3146 15.9332 15.449 15.8196C15.5683 15.719 15.6922 15.5298 15.6922 15.1365C15.6922 14.9754 15.6511 14.8802 15.6065 14.8174C15.5585 14.75 15.4832 14.689 15.3731 14.6375C15.14 14.5281 14.8358 14.5 14.6217 14.5C14.3456 14.5 14.1217 14.2762 14.1217 14C14.1217 13.7239 14.3456 13.5 14.6217 13.5C15.1952 13.5 15.4258 13.325 15.5295 13.1946C15.6507 13.0423 15.6922 12.8331 15.6922 12.6365C15.6922 12.4185 15.4732 12 14.846 12C14.5035 12 14.3104 12.1043 14.1967 12.2046Z" fill="#212121"/>
|
||||
<path d="M9 12.8636C9 12.4209 9.37012 12 9.83521 12C10.1714 12 10.4493 12.1575 10.5869 12.3692C10.7095 12.5577 10.7686 12.8636 10.5168 13.2923C10.3948 13.4998 10.2126 13.6819 9.97385 13.8704C9.85483 13.9644 9.72788 14.0555 9.59137 14.1519L9.53442 14.1922C9.41727 14.2747 9.293 14.3624 9.17294 14.4527C8.60672 14.879 8 15.4632 8 16.5C8 16.7762 8.22385 17 8.5 17L8.52564 16.9993L8.55127 17H11.193C11.4691 17 11.693 16.7762 11.693 16.5C11.693 16.2239 11.4691 16 11.193 16H9.09686C9.21872 15.7181 9.45169 15.4947 9.77423 15.2518C9.87647 15.1749 9.98193 15.1001 10.0942 15.0208L10.1091 15.0105L10.1686 14.9686C10.3059 14.8714 10.4519 14.7671 10.5937 14.6553C10.8764 14.4319 11.1671 14.1595 11.379 13.7989C11.7948 13.0911 11.783 12.3741 11.4252 11.824C11.0824 11.2969 10.4701 11 9.83521 11C8.74658 11 8 11.9427 8 12.8636C8 13.1399 8.22385 13.3636 8.5 13.3636C8.77615 13.3636 9 13.1399 9 12.8636Z" fill="#212121"/>
|
||||
<path d="M4.41754 13.7344C4.62433 13.5965 4.82217 13.4344 5.00415 13.2554V16.5C5.00415 16.7764 5.228 17 5.50415 17C5.7803 17 6.00415 16.7764 6.00415 16.5V11.5C6.00415 11.24 5.8056 11.0264 5.55182 11.0025C5.30316 10.9781 5.0701 11.1431 5.01538 11.3934C4.91281 11.8621 4.46332 12.502 3.86285 12.9024C3.63309 13.0555 3.57098 13.366 3.72415 13.5958C3.87735 13.8255 4.18778 13.8875 4.41754 13.7344Z" fill="#212121"/>
|
||||
</svg>
|
After Width: | Height: | Size: 5.8 KiB |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>ic_fluent_text_underline_24_regular</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="🔍-Product-Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="ic_fluent_text_underline_24_regular" fill="#212121" fill-rule="nonzero">
|
||||
<path d="M6.7499467,19 L17.2499467,19 C17.6641603,19 17.9999467,19.3357864 17.9999467,19.75 C17.9999467,20.1296958 17.7177928,20.443491 17.3517173,20.4931534 L17.2499467,20.5 L6.7499467,20.5 C6.33573313,20.5 5.9999467,20.1642136 5.9999467,19.75 C5.9999467,19.3703042 6.28210058,19.056509 6.64817614,19.0068466 L6.7499467,19 L17.2499467,19 L6.7499467,19 Z M17.2499467,4 C17.6296425,4 17.943432,4.28215388 17.9930935,4.64822944 L17.9999399,4.75 L17.9999399,10.75 C17.9999399,15.14367 15.937012,17.5 11.9970286,17.5 C8.14235118,17.5 6.08613334,15.2445515 6.00258542,11.0336223 L5.99993994,10.75 L5.99993994,4.75 C5.99993994,4.33578644 6.33573313,4 6.7499467,4 C7.12964246,4 7.44343198,4.28215388 7.49309346,4.64822944 L7.49993994,4.75 L7.49993994,10.7507362 C7.49640664,14.3568045 8.93340355,16 11.9970286,16 C14.9823743,16 16.4250766,14.4395401 16.4970985,11.0235443 L16.4999399,10.75 L16.4999399,4.75 C16.4999399,4.33578644 16.8357331,4 17.2499467,4 Z" id="🎨-Color"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -8,5 +8,5 @@ build.initialize(gulp);
|
|||
|
||||
var runSequence = require('run-sequence');
|
||||
gulp.task('package', function (cb) {
|
||||
runSequence('clean', 'build', 'bundle', 'package-solution', cb);
|
||||
runSequence('clean', 'build', 'bundle', 'package-solution', cb);
|
||||
});
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "react-questions-and-answers",
|
||||
"version": "1.0.1",
|
||||
"version": "2.0.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
|
@ -13,8 +13,11 @@
|
|||
"package-prod": "gulp package --ship"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fluentui/theme": "^1.3.0",
|
||||
"@microsoft/decorators": "1.11.0",
|
||||
"@microsoft/sp-application-base": "1.11.0",
|
||||
"@microsoft/sp-core-library": "1.11.0",
|
||||
"@microsoft/sp-lodash-subset": "1.11.0",
|
||||
"@microsoft/sp-lodash-subset": "^1.11.0",
|
||||
"@microsoft/sp-office-ui-fabric-core": "1.11.0",
|
||||
"@microsoft/sp-webpart-base": "1.11.0",
|
||||
"@pnp/common": "2.0.10",
|
||||
|
@ -24,20 +27,22 @@
|
|||
"@pnp/polyfill-ie11": "2.0.2",
|
||||
"@pnp/sp": "2.0.10",
|
||||
"@pnp/spfx-controls-react": "1.20.0",
|
||||
"@tinymce/tinymce-react": "^3.7.0",
|
||||
"@types/es6-promise": "3.3.0",
|
||||
"@types/react-dom": "16.9.8",
|
||||
"@types/webpack-env": "1.15.2",
|
||||
"@uifabric/example-data": "^7.1.5",
|
||||
"classnames": "^2.2.6",
|
||||
"immutable": "^4.0.0-rc.12",
|
||||
"primeicons": "4.0.0",
|
||||
"primereact": "4.2.1",
|
||||
"quill": "1.3.7",
|
||||
"moment": "^2.29.1",
|
||||
"office-ui-fabric-react": "^7.145.0",
|
||||
"react": "16.8.5",
|
||||
"react-dom": "16.8.5",
|
||||
"react-redux": "7.2.1",
|
||||
"redux": "4.0.5",
|
||||
"redux-logger": "3.0.6",
|
||||
"redux-thunk": "2.3.0"
|
||||
"redux-thunk": "2.3.0",
|
||||
"tinymce": "^5.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@microsoft/rush-stack-compiler-3.3": "0.9.14",
|
||||
|
@ -49,7 +54,9 @@
|
|||
"@types/mocha": "8.0.3",
|
||||
"@types/react": "16.9.49",
|
||||
"ajv": "6.12.4",
|
||||
"css-loader": "^5.1.3",
|
||||
"gulp": "^3.9.1",
|
||||
"run-sequence": "^2.2.1"
|
||||
"run-sequence": "^2.2.1",
|
||||
"style-loader": "^2.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
|
||||
<ClientSideComponentInstance
|
||||
Title="QuestionsListManager"
|
||||
Location="ClientSideExtension.ApplicationCustomizer"
|
||||
ComponentId="aefe4f31-4914-4dcb-be8c-f24bf52f7719"
|
||||
Properties="">
|
||||
</ClientSideComponentInstance>
|
||||
</Elements>
|
|
@ -0,0 +1,19 @@
|
|||
<%@ Page language="C#" Inherits="Microsoft.SharePoint.WebControls.ClientSidePage, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %><%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
|
||||
<html xmlns:mso="urn:schemas-microsoft-com:office:office" xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"><head>
|
||||
<meta name="WebPartPageExpansion" content="full" />
|
||||
<!--[if gte mso 9]>
|
||||
<SharePoint:CTFieldRefs runat=server Prefix="mso:" FieldList="FileLeafRef,ClientSideApplicationId,PageLayoutType,CanvasContent1,BannerImageUrl,BannerImageOffset,PromotedState,FirstPublishedDate,LayoutWebpartsContent,_TopicHeader,_SPSitePageFlags"><xml>
|
||||
|
||||
<mso:CustomDocumentProperties>
|
||||
<mso:PageLayoutType msdt:dt="string">SingleWebPartAppPage</mso:PageLayoutType>
|
||||
<mso:_SPSitePageFlags msdt:dt="string"></mso:_SPSitePageFlags>
|
||||
<mso:CanvasContent1 msdt:dt="string"><div><div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata="&#123;&quot;addedFromPersistedData&quot;&#58;&quot;True&quot;,&quot;controlType&quot;&#58;3,&quot;id&quot;&#58;&quot;4c897dbf-3ed7-4572-b152-8c03d5becb3e&quot;,&quot;webPartId&quot;&#58;&quot;761fbf9d-6ef9-4099-8488-02d5e2826f36&quot;&#125;"><div data-sp-webpart="" data-sp-webpartdataversion="1.0" data-sp-webpartdata="&#123;&quot;id&quot;&#58;&quot;761fbf9d-6ef9-4099-8488-02d5e2826f36&quot;,&quot;instanceId&quot;&#58;&quot;4c897dbf-3ed7-4572-b152-8c03d5becb3e&quot;,&quot;title&quot;&#58;&quot;Conversations&quot;,&quot;description&quot;&#58;&quot;Find other conversations or Start a new conversation&quot;,&quot;serverProcessedContent&quot;&#58;&#123;&quot;htmlStrings&quot;&#58;&#123;&#125;,&quot;searchablePlainTexts&quot;&#58;&#123;&#125;,&quot;imageSources&quot;&#58;&#123;&#125;,&quot;links&quot;&#58;&#123;&#125;&#125;,&quot;dataVersion&quot;&#58;&quot;1.0&quot;,&quot;properties&quot;&#58;&#123;&quot;title&quot;&#58;&quot;Conversations&quot;,&quot;pageSize&quot;&#58;20,&quot;sortOption&quot;&#58;&quot;MostRecent&quot;,&quot;loadInitialPage&quot;&#58;true,&quot;hideViewAllButton&quot;&#58;true,&quot;showQuestionAnsweredDropDown&quot;&#58;false,&quot;useApplicationPage&quot;&#58;false,&quot;applicationPage&quot;&#58;&quot;Conversations.aspx&quot;,&quot;webPartRenderMode&quot;&#58;&quot;standard&quot;,&quot;category&quot;&#58;&quot;&quot;,&quot;showCategory&quot;&#58;false,&quot;stateLabel&quot;&#58;&quot;&quot;,&quot;discussionType&quot;&#58;&quot;Conversation&quot;&#125;&#125;"><div data-sp-componentid="">761fbf9d-6ef9-4099-8488-02d5e2826f36</div><div data-sp-htmlproperties=""></div></div></div></div></mso:CanvasContent1>
|
||||
<mso:ClientSideApplicationId msdt:dt="string">b6917cb1-93a0-4b97-a84d-7cf49975d4ec</mso:ClientSideApplicationId>
|
||||
<mso:_TopicHeader msdt:dt="string"></mso:_TopicHeader>
|
||||
<mso:BannerImageUrl msdt:dt="string">https://boinga.sharepoint.com/_layouts/15/images/sitepagethumbnail.png, /_layouts/15/images/sitepagethumbnail.png</mso:BannerImageUrl>
|
||||
<mso:_AuthorByline msdt:dt="string">6;#</mso:_AuthorByline>
|
||||
<mso:LayoutWebpartsContent msdt:dt="string"><div><div data-sp-canvascontrol="" data-sp-canvasdataversion="1.4" data-sp-controldata="&#123;&quot;id&quot;&#58;&quot;cbe7b0a9-3504-44dd-a3a3-0e5cacd07788&quot;,&quot;instanceId&quot;&#58;&quot;cbe7b0a9-3504-44dd-a3a3-0e5cacd07788&quot;,&quot;title&quot;&#58;&quot;Title Region&quot;,&quot;description&quot;&#58;&quot;Title Region Description&quot;,&quot;serverProcessedContent&quot;&#58;&#123;&quot;htmlStrings&quot;&#58;&#123;&#125;,&quot;searchablePlainTexts&quot;&#58;&#123;&#125;,&quot;imageSources&quot;&#58;&#123;&#125;,&quot;links&quot;&#58;&#123;&#125;&#125;,&quot;dataVersion&quot;&#58;&quot;1.4&quot;,&quot;properties&quot;&#58;&#123;&quot;title&quot;&#58;&quot;Conversations&quot;,&quot;imageSourceType&quot;&#58;4,&quot;layoutType&quot;&#58;&quot;FullWidthImage&quot;,&quot;textAlignment&quot;&#58;&quot;Left&quot;,&quot;showTopicHeader&quot;&#58;false,&quot;showPublishDate&quot;&#58;false,&quot;topicHeader&quot;&#58;&quot;&quot;,&quot;authorByline&quot;&#58;[&quot;i&#58;0#.f|membership|bo@bogeorge.com&quot;],&quot;authors&quot;&#58;[ &#123; &quot;id&quot;&#58; &quot;i&#58;0#.f|membership|bo@bogeorge.com&quot;, &quot;upn&quot;&#58; &quot;bo@bogeorge.com&quot;, &quot;email&quot;&#58; &quot;bo@bogeorge.com&quot;, &quot;name&quot;&#58; &quot;Bo George&quot;, &quot;role&quot;&#58; &quot;Principal Consultant&quot; &#125;]&#125;&#125;"></div></div></mso:LayoutWebpartsContent>
|
||||
<mso:display_urn_x003a_schemas-microsoft-com_x003a_office_x003a_office_x0023__AuthorByline msdt:dt="string">Bo George</mso:display_urn_x003a_schemas-microsoft-com_x003a_office_x003a_office_x0023__AuthorByline>
|
||||
</mso:CustomDocumentProperties>
|
||||
</xml></SharePoint:CTFieldRefs><![endif]-->
|
||||
<title>Conversations</title></head>
|
|
@ -3,17 +3,18 @@
|
|||
<meta name="WebPartPageExpansion" content="full" />
|
||||
<!--[if gte mso 9]>
|
||||
<SharePoint:CTFieldRefs runat=server Prefix="mso:" FieldList="FileLeafRef,ClientSideApplicationId,PageLayoutType,CanvasContent1,BannerImageUrl,BannerImageOffset,PromotedState,FirstPublishedDate,LayoutWebpartsContent,_TopicHeader,_SPSitePageFlags"><xml>
|
||||
|
||||
|
||||
|
||||
<mso:CustomDocumentProperties>
|
||||
<mso:PageLayoutType msdt:dt="string">SingleWebPartAppPage</mso:PageLayoutType>
|
||||
<mso:CanvasContent1 msdt:dt="string"><div><div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata="&#123;&quot;controlType&quot;&#58;3,&quot;displayMode&quot;&#58;2,&quot;id&quot;&#58;&quot;17dafb10-3bee-4cec-bf2a-28ff74f048bf&quot;,&quot;position&quot;&#58;&#123;&quot;zoneIndex&quot;&#58;1,&quot;sectionIndex&quot;&#58;1,&quot;controlIndex&quot;&#58;1,&quot;layoutIndex&quot;&#58;1&#125;,&quot;webPartId&quot;&#58;&quot;761fbf9d-6ef9-4099-8488-02d5e2826f36&quot;,&quot;emphasis&quot;&#58;&#123;&#125;,&quot;reservedHeight&quot;&#58;449,&quot;reservedWidth&quot;&#58;1188&#125;"><div data-sp-webpart="" data-sp-webpartdataversion="1.0" data-sp-webpartdata="&#123;&quot;id&quot;&#58;&quot;761fbf9d-6ef9-4099-8488-02d5e2826f36&quot;,&quot;instanceId&quot;&#58;&quot;17dafb10-3bee-4cec-bf2a-28ff74f048bf&quot;,&quot;title&quot;&#58;&quot;Questions&quot;,&quot;description&quot;&#58;&quot;Ask questions or find answers to answered questions&quot;,&quot;serverProcessedContent&quot;&#58;&#123;&quot;htmlStrings&quot;&#58;&#123;&#125;,&quot;searchablePlainTexts&quot;&#58;&#123;&#125;,&quot;imageSources&quot;&#58;&#123;&#125;,&quot;links&quot;&#58;&#123;&#125;&#125;,&quot;dataVersion&quot;&#58;&quot;1.0&quot;,&quot;properties&quot;&#58;&#123;&quot;title&quot;&#58;&quot;Questions&quot;,&quot;pageSize&quot;&#58;20,&quot;sortOption&quot;&#58;&quot;Title&quot;,&quot;loadInitialPage&quot;&#58;true,&quot;hideViewAllButton&quot;&#58;true,&quot;showQuestionAnsweredDropDown&quot;&#58;true,&quot;useApplicationPage&quot;&#58;false,&quot;applicationPage&quot;&#58;&quot;Questions.aspx&quot;&#125;&#125;"><div data-sp-componentid="">761fbf9d-6ef9-4099-8488-02d5e2826f36</div><div data-sp-htmlproperties=""></div></div></div><div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata="&#123;&quot;controlType&quot;&#58;0,&quot;pageSettingsSlice&quot;&#58;&#123;&quot;isDefaultDescription&quot;&#58;true,&quot;isDefaultThumbnail&quot;&#58;true&#125;&#125;"></div></div></mso:CanvasContent1>
|
||||
<mso:CanvasContent1 msdt:dt="string"><div><div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata="&#123;&quot;addedFromPersistedData&quot;&#58;&quot;True&quot;,&quot;controlType&quot;&#58;3,&quot;id&quot;&#58;&quot;fa6a441d-ee28-4501-ba5e-211bbff5b762&quot;,&quot;webPartId&quot;&#58;&quot;761fbf9d-6ef9-4099-8488-02d5e2826f36&quot;&#125;"><div data-sp-webpart="" data-sp-webpartdataversion="1.0" data-sp-webpartdata="&#123;&quot;id&quot;&#58;&quot;761fbf9d-6ef9-4099-8488-02d5e2826f36&quot;,&quot;instanceId&quot;&#58;&quot;fa6a441d-ee28-4501-ba5e-211bbff5b762&quot;,&quot;title&quot;&#58;&quot;Questions&quot;,&quot;description&quot;&#58;&quot;Ask questions or find answers to answered questions&quot;,&quot;serverProcessedContent&quot;&#58;&#123;&quot;htmlStrings&quot;&#58;&#123;&#125;,&quot;searchablePlainTexts&quot;&#58;&#123;&#125;,&quot;imageSources&quot;&#58;&#123;&#125;,&quot;links&quot;&#58;&#123;&#125;&#125;,&quot;dataVersion&quot;&#58;&quot;1.0&quot;,&quot;properties&quot;&#58;&#123;&quot;title&quot;&#58;&quot;Questions&quot;,&quot;pageSize&quot;&#58;20,&quot;sortOption&quot;&#58;&quot;MostRecent&quot;,&quot;loadInitialPage&quot;&#58;true,&quot;hideViewAllButton&quot;&#58;true,&quot;showQuestionAnsweredDropDown&quot;&#58;true,&quot;useApplicationPage&quot;&#58;false,&quot;applicationPage&quot;&#58;&quot;Questions.aspx&quot;,&quot;webPartRenderMode&quot;&#58;&quot;standard&quot;,&quot;category&quot;&#58;&quot;&quot;,&quot;showCategory&quot;&#58;false,&quot;stateLabel&quot;&#58;&quot;&quot;,&quot;discussionType&quot;&#58;&quot;Question&quot;&#125;&#125;"><div data-sp-componentid="">761fbf9d-6ef9-4099-8488-02d5e2826f36</div><div data-sp-htmlproperties=""></div></div></div></div></mso:CanvasContent1>
|
||||
<mso:ClientSideApplicationId msdt:dt="string">b6917cb1-93a0-4b97-a84d-7cf49975d4ec</mso:ClientSideApplicationId>
|
||||
<mso:PromotedState msdt:dt="string">0</mso:PromotedState>
|
||||
<mso:_TopicHeader msdt:dt="string"></mso:_TopicHeader>
|
||||
<mso:BannerImageUrl msdt:dt="string">/_layouts/15/images/sitepagethumbnail.png, /_layouts/15/images/sitepagethumbnail.png</mso:BannerImageUrl>
|
||||
<mso:_AuthorByline msdt:dt="string"></mso:_AuthorByline>
|
||||
<mso:LayoutWebpartsContent msdt:dt="string"><div><div data-sp-canvascontrol="" data-sp-canvasdataversion="1.4" data-sp-controldata="&#123;&quot;id&quot;&#58;&quot;cbe7b0a9-3504-44dd-a3a3-0e5cacd07788&quot;,&quot;instanceId&quot;&#58;&quot;cbe7b0a9-3504-44dd-a3a3-0e5cacd07788&quot;,&quot;title&quot;&#58;&quot;Title area&quot;,&quot;description&quot;&#58;&quot;Title Region Description&quot;,&quot;serverProcessedContent&quot;&#58;&#123;&quot;htmlStrings&quot;&#58;&#123;&#125;,&quot;searchablePlainTexts&quot;&#58;&#123;&#125;,&quot;imageSources&quot;&#58;&#123;&#125;,&quot;links&quot;&#58;&#123;&#125;&#125;,&quot;dataVersion&quot;&#58;&quot;1.4&quot;,&quot;properties&quot;&#58;&#123;&quot;title&quot;&#58;&quot;Question2&quot;,&quot;imageSourceType&quot;&#58;4,&quot;layoutType&quot;&#58;&quot;FullWidthImage&quot;,&quot;textAlignment&quot;&#58;&quot;Left&quot;,&quot;showTopicHeader&quot;&#58;false,&quot;showPublishDate&quot;&#58;false,&quot;topicHeader&quot;&#58;&quot;&quot;,&quot;authors&quot;&#58;[&#123;&quot;id&quot;&#58;&quot;i&#58;0#.f|membership|bo@boinga.onmicrosoft.com&quot;,&quot;upn&quot;&#58;&quot;bo@boinga.onmicrosoft.com&quot;,&quot;name&quot;&#58;&quot;Bo George&quot;,&quot;role&quot;&#58;&quot;&quot;&#125;],&quot;authorByline&quot;&#58;[6]&#125;&#125;"></div></div></mso:LayoutWebpartsContent>
|
||||
<mso:BannerImageUrl msdt:dt="string">https://boinga.sharepoint.com/_layouts/15/images/sitepagethumbnail.png, /_layouts/15/images/sitepagethumbnail.png</mso:BannerImageUrl>
|
||||
<mso:_AuthorByline msdt:dt="string">6;#</mso:_AuthorByline>
|
||||
<mso:LayoutWebpartsContent msdt:dt="string"><div><div data-sp-canvascontrol="" data-sp-canvasdataversion="1.4" data-sp-controldata="&#123;&quot;id&quot;&#58;&quot;cbe7b0a9-3504-44dd-a3a3-0e5cacd07788&quot;,&quot;instanceId&quot;&#58;&quot;cbe7b0a9-3504-44dd-a3a3-0e5cacd07788&quot;,&quot;title&quot;&#58;&quot;Title Region&quot;,&quot;description&quot;&#58;&quot;Title Region Description&quot;,&quot;serverProcessedContent&quot;&#58;&#123;&quot;htmlStrings&quot;&#58;&#123;&#125;,&quot;searchablePlainTexts&quot;&#58;&#123;&#125;,&quot;imageSources&quot;&#58;&#123;&#125;,&quot;links&quot;&#58;&#123;&#125;&#125;,&quot;dataVersion&quot;&#58;&quot;1.4&quot;,&quot;properties&quot;&#58;&#123;&quot;title&quot;&#58;&quot;Questions&quot;,&quot;imageSourceType&quot;&#58;4,&quot;layoutType&quot;&#58;&quot;FullWidthImage&quot;,&quot;textAlignment&quot;&#58;&quot;Left&quot;,&quot;showTopicHeader&quot;&#58;false,&quot;showPublishDate&quot;&#58;false,&quot;topicHeader&quot;&#58;&quot;&quot;,&quot;authorByline&quot;&#58;[&quot;i&#58;0#.f|membership|bo@boinga.onmicrosoft.com&quot;],&quot;authors&quot;&#58;[ &#123; &quot;id&quot;&#58; &quot;i&#58;0#.f|membership|bo@boinga.onmicrosoft.com&quot;, &quot;upn&quot;&#58; &quot;bo@boinga.onmicrosoft.com&quot;, &quot;name&quot;&#58; &quot;Bo George&quot;, &quot;role&quot;&#58; &quot;&quot; &#125;]&#125;&#125;"></div></div></mso:LayoutWebpartsContent>
|
||||
<mso:display_urn_x003a_schemas-microsoft-com_x003a_office_x003a_office_x0023__AuthorByline msdt:dt="string">Bo George</mso:display_urn_x003a_schemas-microsoft-com_x003a_office_x003a_office_x0023__AuthorByline>
|
||||
</mso:CustomDocumentProperties>
|
||||
</xml></SharePoint:CTFieldRefs><![endif]-->
|
||||
<title>Questions</title></head>
|
||||
<title>Questions</title></head>
|
||||
|
|
|
@ -1,188 +1,133 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
|
||||
<!-- Post fields - shared by Question and Reply Content Types -->
|
||||
<Field ID="{8f1abe02-cc82-477c-be27-6fefaac2cb6f}"
|
||||
Name="TW_Details"
|
||||
DisplayName="Details"
|
||||
Type="Note"
|
||||
Required="FALSE"
|
||||
Group="_TW"
|
||||
NumLines="6"
|
||||
RichText="TRUE"
|
||||
RichTextMode="FullHtml"
|
||||
AppendOnly="FALSE">
|
||||
</Field>
|
||||
<!-- Post fields - shared by Question and Reply Content Types -->
|
||||
<Field ID="{8f1abe02-cc82-477c-be27-6fefaac2cb6f}" Name="TW_Details" DisplayName="Details" Type="Note" Required="FALSE" Group="_TW" NumLines="6" RichText="TRUE" RichTextMode="FullHtml" AppendOnly="FALSE"></Field>
|
||||
|
||||
<Field ID="{b9e9da58-096d-4d3d-bf8c-4034f97461a9}"
|
||||
Name="TW_DetailsText"
|
||||
DisplayName="Details Text"
|
||||
Type="Note"
|
||||
Required="FALSE"
|
||||
Group="_TW"
|
||||
NumLines="6"
|
||||
RichText="FALSE"
|
||||
RichTextMode="FullHtml"
|
||||
AppendOnly="FALSE">
|
||||
</Field>
|
||||
<Field ID="{b9e9da58-096d-4d3d-bf8c-4034f97461a9}" Name="TW_DetailsText" DisplayName="Details Text" Type="Note" Required="FALSE" Group="_TW" NumLines="6" RichText="FALSE" RichTextMode="FullHtml" AppendOnly="FALSE"></Field>
|
||||
|
||||
<Field ID="{54c33e2a-a458-4ef9-8d7a-f1167887ec5c}"
|
||||
Name="TW_LikeCount"
|
||||
DisplayName="Count Likes"
|
||||
Type="Number"
|
||||
Required="FALSE"
|
||||
Group="_TW"
|
||||
Percentage="FALSE">
|
||||
<Default>0</Default>
|
||||
</Field>
|
||||
<Field ID="{54c33e2a-a458-4ef9-8d7a-f1167887ec5c}" Name="TW_LikeCount" DisplayName="Count Likes" Type="Number" Required="FALSE" Group="_TW" Percentage="FALSE">
|
||||
<Default>0</Default>
|
||||
</Field>
|
||||
|
||||
<Field ID="{9fb0a0fc-75e9-4224-a9b1-9bb0acc3bdcd}"
|
||||
Name="TW_LikeIds"
|
||||
DisplayName="Ids Like"
|
||||
Type="Note"
|
||||
Required="FALSE"
|
||||
Group="_TW"
|
||||
NumLines="6"
|
||||
RichText="FALSE"
|
||||
RichTextMode="Compatible"
|
||||
AppendOnly="FALSE">
|
||||
</Field>
|
||||
<Field ID="{9fb0a0fc-75e9-4224-a9b1-9bb0acc3bdcd}" Name="TW_LikeIds" DisplayName="Ids Like" Type="Note" Required="FALSE" Group="_TW" NumLines="6" RichText="FALSE" RichTextMode="Compatible" AppendOnly="FALSE"></Field>
|
||||
|
||||
<!-- Question Fields -->
|
||||
<Field ID="{7d4ee5f7-d1cc-4d04-983d-2052031800f5}"
|
||||
Name="TW_IsAnswered"
|
||||
DisplayName="Is Answered"
|
||||
Type="Boolean"
|
||||
Required="FALSE"
|
||||
Group="_TW">
|
||||
<Default>0</Default>
|
||||
</Field>
|
||||
<!-- Question Fields -->
|
||||
<Field ID="{7d4ee5f7-d1cc-4d04-983d-2052031800f5}" Name="TW_IsAnswered" DisplayName="Is Answered" Type="Boolean" Required="FALSE" Group="_TW">
|
||||
<Default>0</Default>
|
||||
</Field>
|
||||
|
||||
<Field ID="{521325f8-6e0a-4b9f-9a53-a34fe70f2488}"
|
||||
Name="TW_FollowEmails"
|
||||
DisplayName="Follow Emails"
|
||||
Type="Note"
|
||||
Required="FALSE"
|
||||
Group="_TW"
|
||||
NumLines="6"
|
||||
RichText="FALSE"
|
||||
RichTextMode="Compatible"
|
||||
AppendOnly="FALSE">
|
||||
</Field>
|
||||
<Field ID="{521325f8-6e0a-4b9f-9a53-a34fe70f2488}" Name="TW_FollowEmails" DisplayName="Follow Emails" Type="Note" Required="FALSE" Group="_TW" NumLines="6" RichText="FALSE" RichTextMode="Compatible" AppendOnly="FALSE"></Field>
|
||||
|
||||
<!-- Reply Fields -->
|
||||
<Field ID="{a41b6b54-7fa0-426b-8bf6-d8b7d07f1baa}"
|
||||
Name="TW_IsAnswer"
|
||||
DisplayName="Is Answer"
|
||||
Type="Boolean"
|
||||
Required="FALSE"
|
||||
Group="_TW">
|
||||
<Default>0</Default>
|
||||
</Field>
|
||||
<!-- Reply Fields -->
|
||||
<Field ID="{a41b6b54-7fa0-426b-8bf6-d8b7d07f1baa}" Name="TW_IsAnswer" DisplayName="Is Answer" Type="Boolean" Required="FALSE" Group="_TW">
|
||||
<Default>0</Default>
|
||||
</Field>
|
||||
|
||||
<Field ID="{9b2e96d7-4084-4881-8f6a-91f07eb78ca6}"
|
||||
Name="TW_HelpfulCount"
|
||||
DisplayName="Count Helpful"
|
||||
Type="Number"
|
||||
Required="FALSE"
|
||||
Group="_TW"
|
||||
Percentage="FALSE">
|
||||
<Default>0</Default>
|
||||
</Field>
|
||||
<Field ID="{9b2e96d7-4084-4881-8f6a-91f07eb78ca6}" Name="TW_HelpfulCount" DisplayName="Count Helpful" Type="Number" Required="FALSE" Group="_TW" Percentage="FALSE">
|
||||
<Default>0</Default>
|
||||
</Field>
|
||||
|
||||
<Field ID="{d78817a1-eaba-48f6-a55a-5ecfe645de46}"
|
||||
Name="TW_HelpfulIds"
|
||||
DisplayName="Ids Helpful"
|
||||
Type="Note"
|
||||
Required="FALSE"
|
||||
Group="_TW"
|
||||
NumLines="6"
|
||||
RichText="FALSE"
|
||||
RichTextMode="Compatible"
|
||||
AppendOnly="FALSE">
|
||||
</Field>
|
||||
<Field ID="{d78817a1-eaba-48f6-a55a-5ecfe645de46}" Name="TW_HelpfulIds" DisplayName="Ids Helpful" Type="Note" Required="FALSE" Group="_TW" NumLines="6" RichText="FALSE" RichTextMode="Compatible" AppendOnly="FALSE"></Field>
|
||||
|
||||
<Field ID="{672f66ce-f9a0-447e-ba2c-96b1814f1898}"
|
||||
Type="Lookup"
|
||||
Name="TW_QuestionLookup"
|
||||
DisplayName="Related Question"
|
||||
Required="FALSE"
|
||||
Group="_TW"
|
||||
List="Lists/Questions"
|
||||
ShowField="Title" />
|
||||
<Field ID="{672f66ce-f9a0-447e-ba2c-96b1814f1898}" Type="Lookup" Name="TW_QuestionLookup" DisplayName="Related Question" Required="FALSE" Group="_TW" List="Lists/Questions" ShowField="Title" />
|
||||
|
||||
<Field ID="{06fb6a45-b62c-4c31-a82c-4fc95e510029}"
|
||||
Type="Lookup"
|
||||
Name="TW_ReplyLookup"
|
||||
DisplayName="Related Reply"
|
||||
Required="FALSE"
|
||||
Group="_TW"
|
||||
List="Lists/Questions"
|
||||
ShowField="Title" />
|
||||
<Field ID="{06fb6a45-b62c-4c31-a82c-4fc95e510029}" Type="Lookup" Name="TW_ReplyLookup" DisplayName="Related Reply" Required="FALSE" Group="_TW" List="Lists/Questions" ShowField="Title" />
|
||||
|
||||
<ContentType ID="0x01008B64E4A73BE90C46A62FC880772E3184"
|
||||
Name="Question"
|
||||
Description="Content Type for asking a question"
|
||||
Group="_TW">
|
||||
<FieldRefs>
|
||||
<!--Title Site Column -->
|
||||
<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />
|
||||
<!-- TW_Details Site Column -->
|
||||
<FieldRef ID="{8f1abe02-cc82-477c-be27-6fefaac2cb6f}" />
|
||||
<!-- TW_IsAnswered Site Column -->
|
||||
<FieldRef ID="{7d4ee5f7-d1cc-4d04-983d-2052031800f5}" />
|
||||
<!-- TW_LikeCount Site Column -->
|
||||
<FieldRef ID="{54c33e2a-a458-4ef9-8d7a-f1167887ec5c}" />
|
||||
<!-- TW_LikeIds Site Column -->
|
||||
<FieldRef ID="{9fb0a0fc-75e9-4224-a9b1-9bb0acc3bdcd}" />
|
||||
<!-- TW_FollowEmails Site Column -->
|
||||
<FieldRef ID="{521325f8-6e0a-4b9f-9a53-a34fe70f2488}" />
|
||||
</FieldRefs>
|
||||
</ContentType>
|
||||
|
||||
<ContentType ID="0x0100E33B533F27584848845AF62A7C292F00"
|
||||
Name="Reply"
|
||||
Description="Content Type for replying to a question"
|
||||
Group="_TW">
|
||||
<FieldRefs>
|
||||
<!--Title Site Column -->
|
||||
<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />
|
||||
<!-- TW_Details Site Column -->
|
||||
<FieldRef ID="{8f1abe02-cc82-477c-be27-6fefaac2cb6f}" />
|
||||
<!-- TW_IsAnswer Site Column -->
|
||||
<FieldRef ID="{a41b6b54-7fa0-426b-8bf6-d8b7d07f1baa}" />
|
||||
<!-- TW_HelpfulCount Site Column -->
|
||||
<FieldRef ID="{9b2e96d7-4084-4881-8f6a-91f07eb78ca6}" />
|
||||
<!-- TW_HelpfulIds Site Column -->
|
||||
<FieldRef ID="{d78817a1-eaba-48f6-a55a-5ecfe645de46}" />
|
||||
<!-- TW_LikeCount Site Column -->
|
||||
<FieldRef ID="{54c33e2a-a458-4ef9-8d7a-f1167887ec5c}" />
|
||||
<!-- TW_LikeIds Site Column -->
|
||||
<FieldRef ID="{9fb0a0fc-75e9-4224-a9b1-9bb0acc3bdcd}" />
|
||||
<!-- TW_QuestionLookup Site Column -->
|
||||
<FieldRef ID="{672f66ce-f9a0-447e-ba2c-96b1814f1898}" />
|
||||
<!-- TW_ReplyLookup Site Column -->
|
||||
<FieldRef ID="{06fb6a45-b62c-4c31-a82c-4fc95e510029}" />
|
||||
</FieldRefs>
|
||||
</ContentType>
|
||||
<Field ID="{8687a351-7e1b-4f4d-a85e-2feca68079f6}" Type="Choice" Name="TW_QuestionType" DisplayName="Discussion Type" Required="FALSE" Group="_TW">
|
||||
<CHOICES>
|
||||
<CHOICE>Question</CHOICE>
|
||||
<CHOICE>Conversation</CHOICE>
|
||||
</CHOICES>
|
||||
<Default>Question</Default>
|
||||
</Field>
|
||||
|
||||
<!-- FeatureId must match the id of the Custom List Feature -->
|
||||
<ListInstance
|
||||
CustomSchema="schema.xml"
|
||||
FeatureId="00bfea71-de22-43b2-a848-c05709900100"
|
||||
Title="Questions"
|
||||
Hidden="TRUE"
|
||||
VersioningEnabled="TRUE"
|
||||
Description="Questions List"
|
||||
TemplateType="100"
|
||||
Url="Lists/Questions">
|
||||
</ListInstance>
|
||||
<Field ID="{529b4614-c444-4fef-b581-30108e44f4b6}" Type="URL" Name="TW_SourcePage" DisplayName="Page" Required="FALSE" Group="_TW"></Field>
|
||||
|
||||
<Module Name="QuestionsPage" Url="SitePages">
|
||||
<File Path="QuestionsSitePage.aspx"
|
||||
Url="Questions.aspx"
|
||||
IgnoreIfAlreadyExists="TRUE"
|
||||
ReplaceContent="TRUE"
|
||||
Type="GhostableInLibrary">
|
||||
</File>
|
||||
</Module>
|
||||
</Elements>
|
||||
<Field ID="{c913f4f2-60a4-4603-bda1-f6325b5fb9d0}" Type="Choice" Name="TW_Category" DisplayName="Category" Required="FALSE" FillInChoice="TRUE" Group="_TW"></Field>
|
||||
|
||||
<ContentType ID="0x01008B64E4A73BE90C46A62FC880772E3184" Name="Question" Description="Content Type for asking a question" Group="_TW">
|
||||
<FieldRefs>
|
||||
<!--Title Site Column -->
|
||||
<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />
|
||||
<!-- TW_Details Site Column -->
|
||||
<FieldRef ID="{8f1abe02-cc82-477c-be27-6fefaac2cb6f}" />
|
||||
<!-- TW_IsAnswered Site Column -->
|
||||
<FieldRef ID="{7d4ee5f7-d1cc-4d04-983d-2052031800f5}" />
|
||||
<!-- TW_LikeCount Site Column -->
|
||||
<FieldRef ID="{54c33e2a-a458-4ef9-8d7a-f1167887ec5c}" />
|
||||
<!-- TW_LikeIds Site Column -->
|
||||
<FieldRef ID="{9fb0a0fc-75e9-4224-a9b1-9bb0acc3bdcd}" />
|
||||
<!-- TW_FollowEmails Site Column -->
|
||||
<FieldRef ID="{521325f8-6e0a-4b9f-9a53-a34fe70f2488}" />
|
||||
<!-- TW_Category Site Column -->
|
||||
<FieldRef ID="{c913f4f2-60a4-4603-bda1-f6325b5fb9d0}" />
|
||||
<!-- TW_SourcePage Site Column -->
|
||||
<FieldRef ID="{529b4614-c444-4fef-b581-30108e44f4b6}" />
|
||||
<!-- TW_QuestionType Site Column -->
|
||||
<FieldRef ID="{8687a351-7e1b-4f4d-a85e-2feca68079f6}" />
|
||||
</FieldRefs>
|
||||
</ContentType>
|
||||
|
||||
<ContentType ID="0x0100E33B533F27584848845AF62A7C292F00" Name="Reply" Description="Content Type for replying to a question" Group="_TW">
|
||||
<FieldRefs>
|
||||
<!--Title Site Column -->
|
||||
<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />
|
||||
<!-- TW_Details Site Column -->
|
||||
<FieldRef ID="{8f1abe02-cc82-477c-be27-6fefaac2cb6f}" />
|
||||
<!-- TW_IsAnswer Site Column -->
|
||||
<FieldRef ID="{a41b6b54-7fa0-426b-8bf6-d8b7d07f1baa}" />
|
||||
<!-- TW_HelpfulCount Site Column -->
|
||||
<FieldRef ID="{9b2e96d7-4084-4881-8f6a-91f07eb78ca6}" />
|
||||
<!-- TW_HelpfulIds Site Column -->
|
||||
<FieldRef ID="{d78817a1-eaba-48f6-a55a-5ecfe645de46}" />
|
||||
<!-- TW_LikeCount Site Column -->
|
||||
<FieldRef ID="{54c33e2a-a458-4ef9-8d7a-f1167887ec5c}" />
|
||||
<!-- TW_LikeIds Site Column -->
|
||||
<FieldRef ID="{9fb0a0fc-75e9-4224-a9b1-9bb0acc3bdcd}" />
|
||||
<!-- TW_QuestionLookup Site Column -->
|
||||
<FieldRef ID="{672f66ce-f9a0-447e-ba2c-96b1814f1898}" />
|
||||
<!-- TW_ReplyLookup Site Column -->
|
||||
<FieldRef ID="{06fb6a45-b62c-4c31-a82c-4fc95e510029}" />
|
||||
</FieldRefs>
|
||||
</ContentType>
|
||||
|
||||
<!-- FeatureId must match the id of the 'CustomList' SharePoint Feature, run Get-PnPFeature -Scope Web to find them -->
|
||||
<ListInstance CustomSchema="schema.xml"
|
||||
FeatureId="00bfea71-de22-43b2-a848-c05709900100"
|
||||
Title="Questions"
|
||||
Hidden="FALSE"
|
||||
VersioningEnabled="TRUE"
|
||||
Description="Questions List"
|
||||
TemplateType="100"
|
||||
Url="Lists/Questions">
|
||||
</ListInstance>
|
||||
|
||||
<!-- FeatureId must match the id of the 'DocumentLibrary' SharePoint Feature, run Get-PnPFeature -Scope Web to find them -->
|
||||
<ListInstance
|
||||
FeatureId="00bfea71-e717-4e80-aa17-d0c71b360101"
|
||||
Title="Questions Assets"
|
||||
Hidden="TRUE"
|
||||
VersioningEnabled="TRUE"
|
||||
Description="Questions Assets"
|
||||
TemplateType="101"
|
||||
Url="QuestionsAssets">
|
||||
</ListInstance>
|
||||
|
||||
<!-- FeatureId must match the id of the 'CustomList' SharePoint Feature, run Get-PnPFeature -Scope Web to find them -->
|
||||
<ListInstance
|
||||
FeatureId="00bfea71-de22-43b2-a848-c05709900100"
|
||||
Title="Question Category Labeling"
|
||||
Hidden="TRUE"
|
||||
VersioningEnabled="TRUE"
|
||||
Description="Questions List"
|
||||
TemplateType="100"
|
||||
Url="Lists/QuestionCategoryLabeling">
|
||||
</ListInstance>
|
||||
|
||||
<Module Name="QuestionsPage" Url="SitePages">
|
||||
<File Path="QuestionsSitePage.aspx" Url="Questions.aspx" IgnoreIfAlreadyExists="TRUE" ReplaceContent="TRUE" Type="GhostableInLibrary"></File>
|
||||
<File Path="ConversationsSitePage.aspx" Url="Conversations.aspx" IgnoreIfAlreadyExists="TRUE" ReplaceContent="TRUE" Type="GhostableInLibrary"></File>
|
||||
</Module>
|
||||
|
||||
</Elements>
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
|
||||
<CustomAction
|
||||
Title="Questions List Manager"
|
||||
Location="ClientSideExtension.ApplicationCustomizer"
|
||||
ClientSideComponentId="aefe4f31-4914-4dcb-be8c-f24bf52f7719"
|
||||
ClientSideComponentProperties="">
|
||||
</CustomAction>
|
||||
</Elements>
|
|
@ -1,11 +1,4 @@
|
|||
<List xmlns:ows="Microsoft SharePoint" Title="Questions"
|
||||
EnableContentTypes="TRUE"
|
||||
FolderCreation="FALSE"
|
||||
Direction="$Resources:Direction;"
|
||||
Url="Lists/Questions"
|
||||
BaseType="0"
|
||||
NoCrawl="TRUE"
|
||||
xmlns="http://schemas.microsoft.com/sharepoint/">
|
||||
<List xmlns:ows="Microsoft SharePoint" Title="Questions" EnableContentTypes="TRUE" FolderCreation="FALSE" Direction="$Resources:Direction;" Url="Lists/Questions" BaseType="0" NoCrawl="FALSE" xmlns="http://schemas.microsoft.com/sharepoint/">
|
||||
<MetaData>
|
||||
<!-- ContentTypeRef was resulting in empty Item list content type (Title only) but still with Question/Reply as parent -->
|
||||
<ContentTypes>
|
||||
|
@ -16,7 +9,7 @@
|
|||
<!-- TW_Details Site Column -->
|
||||
<FieldRef ID="{8f1abe02-cc82-477c-be27-6fefaac2cb6f}" />
|
||||
<!-- TW_DetailsText Site Column -->
|
||||
<FieldRef ID="{b9e9da58-096d-4d3d-bf8c-4034f97461a9}"/>
|
||||
<FieldRef ID="{b9e9da58-096d-4d3d-bf8c-4034f97461a9}" />
|
||||
<!-- TW_IsAnswered Site Column -->
|
||||
<FieldRef ID="{7d4ee5f7-d1cc-4d04-983d-2052031800f5}" />
|
||||
<!-- TW_LikeCount Site Column -->
|
||||
|
@ -24,31 +17,37 @@
|
|||
<!-- TW_LikeIds Site Column -->
|
||||
<FieldRef ID="{9fb0a0fc-75e9-4224-a9b1-9bb0acc3bdcd}" />
|
||||
<!-- TW_FollowEmails Site Column -->
|
||||
<FieldRef ID="{521325f8-6e0a-4b9f-9a53-a34fe70f2488}" />
|
||||
<FieldRef ID="{521325f8-6e0a-4b9f-9a53-a34fe70f2488}" />
|
||||
<!-- TW_Category Site Column -->
|
||||
<FieldRef ID="{c913f4f2-60a4-4603-bda1-f6325b5fb9d0}" />
|
||||
<!-- TW_SourcePage Site Column -->
|
||||
<FieldRef ID="{529b4614-c444-4fef-b581-30108e44f4b6}" />
|
||||
<!-- TW_QuestionType Site Column -->
|
||||
<FieldRef ID="{8687a351-7e1b-4f4d-a85e-2feca68079f6}" />
|
||||
</FieldRefs>
|
||||
</ContentType>
|
||||
<ContentType ID="0x0100E33B533F27584848845AF62A7C292F00" Name="Reply">
|
||||
<FieldRefs>
|
||||
<!--Title Site Column -->
|
||||
<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />
|
||||
<!-- TW_Details Site Column -->
|
||||
<FieldRef ID="{8f1abe02-cc82-477c-be27-6fefaac2cb6f}" />
|
||||
<!-- TW_DetailsText Site Column -->
|
||||
<FieldRef ID="{b9e9da58-096d-4d3d-bf8c-4034f97461a9}"/>
|
||||
<!-- TW_IsAnswer Site Column -->
|
||||
<FieldRef ID="{a41b6b54-7fa0-426b-8bf6-d8b7d07f1baa}" />
|
||||
<!-- TW_HelpfulCount Site Column -->
|
||||
<FieldRef ID="{9b2e96d7-4084-4881-8f6a-91f07eb78ca6}" />
|
||||
<!-- TW_HelpfulIds Site Column -->
|
||||
<FieldRef ID="{d78817a1-eaba-48f6-a55a-5ecfe645de46}" />
|
||||
<!-- TW_LikeCount Site Column -->
|
||||
<FieldRef ID="{54c33e2a-a458-4ef9-8d7a-f1167887ec5c}" />
|
||||
<!-- TW_LikeIds Site Column -->
|
||||
<FieldRef ID="{9fb0a0fc-75e9-4224-a9b1-9bb0acc3bdcd}" />
|
||||
<!-- TW_QuestionLookup Site Column -->
|
||||
<FieldRef ID="{672f66ce-f9a0-447e-ba2c-96b1814f1898}" />
|
||||
<!-- TW_ReplyLookup Site Column -->
|
||||
<FieldRef ID="{06fb6a45-b62c-4c31-a82c-4fc95e510029}" />
|
||||
<!--Title Site Column -->
|
||||
<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />
|
||||
<!-- TW_Details Site Column -->
|
||||
<FieldRef ID="{8f1abe02-cc82-477c-be27-6fefaac2cb6f}" />
|
||||
<!-- TW_DetailsText Site Column -->
|
||||
<FieldRef ID="{b9e9da58-096d-4d3d-bf8c-4034f97461a9}" />
|
||||
<!-- TW_IsAnswer Site Column -->
|
||||
<FieldRef ID="{a41b6b54-7fa0-426b-8bf6-d8b7d07f1baa}" />
|
||||
<!-- TW_HelpfulCount Site Column -->
|
||||
<FieldRef ID="{9b2e96d7-4084-4881-8f6a-91f07eb78ca6}" />
|
||||
<!-- TW_HelpfulIds Site Column -->
|
||||
<FieldRef ID="{d78817a1-eaba-48f6-a55a-5ecfe645de46}" />
|
||||
<!-- TW_LikeCount Site Column -->
|
||||
<FieldRef ID="{54c33e2a-a458-4ef9-8d7a-f1167887ec5c}" />
|
||||
<!-- TW_LikeIds Site Column -->
|
||||
<FieldRef ID="{9fb0a0fc-75e9-4224-a9b1-9bb0acc3bdcd}" />
|
||||
<!-- TW_QuestionLookup Site Column -->
|
||||
<FieldRef ID="{672f66ce-f9a0-447e-ba2c-96b1814f1898}" />
|
||||
<!-- TW_ReplyLookup Site Column -->
|
||||
<FieldRef ID="{06fb6a45-b62c-4c31-a82c-4fc95e510029}" />
|
||||
</FieldRefs>
|
||||
</ContentType>
|
||||
</ContentTypes>
|
||||
|
@ -61,14 +60,17 @@
|
|||
<Toolbar Type="Standard" />
|
||||
<ViewFields>
|
||||
<FieldRef Name="ContentType" />
|
||||
<FieldRef Name="TW_QuestionType" />
|
||||
<FieldRef Name="ID" />
|
||||
<FieldRef Name="LinkTitle" />
|
||||
<FieldRef Name="TW_Category" />
|
||||
<FieldRef Name="TW_IsAnswered" />
|
||||
<FieldRef Name="TW_IsAnswer" />
|
||||
<FieldRef Name="TW_LikeCount" />
|
||||
<FieldRef Name="TW_HelpfulCount" />
|
||||
<FieldRef Name="TW_QuestionLookup" />
|
||||
<FieldRef Name="TW_ReplyLookup" />
|
||||
<FieldRef Name="TW_SourcePage" />
|
||||
<FieldRef Name="Created" />
|
||||
<FieldRef Name="Author" />
|
||||
<FieldRef Name="Modified" />
|
||||
|
@ -87,4 +89,4 @@
|
|||
<Form Type="NewForm" Url="NewForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" />
|
||||
</Forms>
|
||||
</MetaData>
|
||||
</List>
|
||||
</List>
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"$schema": "https://developer.microsoft.com/json-schemas/spfx/client-side-extension-manifest.schema.json",
|
||||
"id": "aefe4f31-4914-4dcb-be8c-f24bf52f7719",
|
||||
"alias": "QuestionsListManager",
|
||||
"componentType": "Extension",
|
||||
"extensionType": "ApplicationCustomizer",
|
||||
"version": "*",
|
||||
"manifestVersion": 2,
|
||||
"requiresCustomScript": false
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
import { override } from '@microsoft/decorators';
|
||||
import { BaseApplicationCustomizer } from '@microsoft/sp-application-base';
|
||||
import { sp } from "@pnp/sp";
|
||||
import { UserService } from 'services/user.service';
|
||||
//import * as strings from 'QuestionsWebPartStrings';
|
||||
import { LogHelper, ListNames, ListForms, ApplicationPages, Parameters, DiscussionType } from 'utilities';
|
||||
import { ICurrentUser, IItemInfo } from 'models';
|
||||
import { QuestionService } from 'services/questions.service';
|
||||
|
||||
export interface IQuestionsListManagerApplicationCustomizerProperties {
|
||||
// This is an example; replace with your own property
|
||||
}
|
||||
|
||||
/** A Custom Action which can be run during execution of a Client Side Application */
|
||||
export default class QuestionsListManagerApplicationCustomizer
|
||||
extends BaseApplicationCustomizer<IQuestionsListManagerApplicationCustomizerProperties> {
|
||||
|
||||
@override
|
||||
public onInit(): Promise<void> {
|
||||
LogHelper.info(this.constructor.name, "onInit", "start");
|
||||
|
||||
sp.setup({
|
||||
ie11: true,
|
||||
spfxContext: this.context,
|
||||
});
|
||||
|
||||
let currentLocation = window.location.href.toLocaleLowerCase();
|
||||
let questionsUrl = `/lists/${ListNames.QUESTIONS.toLowerCase()}`;
|
||||
let dispFormUrl = `${questionsUrl}/${ListForms.DiSPLAYFORM.toLowerCase()}`;
|
||||
let editFormUrl = `${questionsUrl}/${ListForms.EDITFORM.toLowerCase()}`;
|
||||
let newFormUrl = `${questionsUrl}/${ListForms.NEWFORM.toLowerCase()}`;
|
||||
|
||||
// we only care to do anything if we are somewhere in the questions lists
|
||||
if (currentLocation.indexOf(questionsUrl) !== -1) {
|
||||
|
||||
if ((currentLocation.indexOf(dispFormUrl) !== -1) || (currentLocation.indexOf(editFormUrl) !== -1)) {
|
||||
|
||||
// if disp or edit form get item an send to appropriate question or conversation
|
||||
if (window.location.search) {
|
||||
let queryParms = new URLSearchParams(window.location.search.toLowerCase());
|
||||
if (queryParms.has(Parameters.ID.toLowerCase())) {
|
||||
let itemId = Number(queryParms.get(Parameters.ID.toLowerCase()));
|
||||
new QuestionService().getItemInfoById(itemId)
|
||||
.then((itemInfo: IItemInfo) => {
|
||||
let applicationPage = itemInfo.discussionType === DiscussionType.Question ? ApplicationPages.QUESTIONS : ApplicationPages.CONVERSATIONS;
|
||||
let questionId = itemInfo.parentQuestionId ? itemInfo.parentQuestionId : itemInfo.id;
|
||||
this.redirectToPage(currentLocation, questionsUrl, applicationPage, questionId);
|
||||
})
|
||||
.catch((e) => {
|
||||
LogHelper.error(this.constructor.name, "onInit", `Error getting item: ${e.message}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (currentLocation.indexOf(newFormUrl) !== -1) {
|
||||
// if new form send to new question page
|
||||
this.redirectToPage(currentLocation, questionsUrl, ApplicationPages.QUESTIONS, 0);
|
||||
}
|
||||
else {
|
||||
// if normal list views and user can't moderate send to Questions.aspx
|
||||
new UserService().getCurrentUser()
|
||||
.then((currentUser: ICurrentUser) => {
|
||||
if (!currentUser || !currentUser.canModerateItems) {
|
||||
this.redirectToPage(currentLocation, questionsUrl, ApplicationPages.QUESTIONS);
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
LogHelper.error(this.constructor.name, "onInit", `Error getting current user: ${e.message}`);
|
||||
this.redirectToPage(currentLocation, questionsUrl, ApplicationPages.QUESTIONS);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
private redirectToPage = (currentLocation: string, questionsUrl: string, applicationPage: string, questionId?: number) => {
|
||||
let questionsListParts = currentLocation.split(questionsUrl);
|
||||
let questionsListUrl = `${questionsListParts[0]}/SitePages/${applicationPage}`;
|
||||
|
||||
if(questionId) {
|
||||
questionsListUrl += `?${Parameters.QUESTIONID}=${questionId}`;
|
||||
}
|
||||
|
||||
window.location.replace(questionsListUrl);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
import { IBaseItem } from './IBaseItem';
|
||||
|
||||
export interface ICategoryLabelItem extends IBaseItem {
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
export interface IFileAttachment {
|
||||
fileName: string;
|
||||
serverRelativeUrl: string;
|
||||
isAttached: boolean;
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
import { DiscussionType } from "utilities";
|
||||
|
||||
export interface IItemInfo {
|
||||
id?: number;
|
||||
title?: string;
|
||||
parentQuestionId?: number | null;
|
||||
parentReplyId?: number | null;
|
||||
discussionType: DiscussionType;
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
import { PagedItemCollection } from '@pnp/sp/items';
|
||||
|
||||
export interface IPagedItems<T> {
|
||||
items: T[];
|
||||
pagedItemCollection?: PagedItemCollection<any>;
|
||||
nextHref?: string;
|
||||
//pagedItemCollection?: PagedItemCollection<any>;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import { IBaseItem } from './IBaseItem';
|
||||
import { IFileAttachment } from './IFileAttachment';
|
||||
|
||||
export interface IPostItem extends IBaseItem {
|
||||
details: string;
|
||||
detailsText: string;
|
||||
likeCount: number;
|
||||
likeIds: string[];
|
||||
likeIds: string[];
|
||||
|
||||
// determined based on current user and item intersection
|
||||
likedByCurrentUser: boolean;
|
||||
|
@ -12,4 +13,9 @@ export interface IPostItem extends IBaseItem {
|
|||
canDelete: boolean;
|
||||
canReact: boolean;
|
||||
canReply: boolean;
|
||||
}
|
||||
|
||||
//
|
||||
attachments: IFileAttachment[];
|
||||
newAttachments: File[];
|
||||
removedAttachments: string[];
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import { IReplyItem } from './IReplyItem';
|
||||
import { IPostItem } from './IPostItem';
|
||||
import { DiscussionType } from 'utilities';
|
||||
|
||||
export interface IQuestionItem extends IPostItem {
|
||||
isAnswered: boolean;
|
||||
followEmails: string[];
|
||||
|
||||
isAnswered: boolean;
|
||||
followEmails: string[];
|
||||
|
||||
// built by things that lookup to this
|
||||
totalReplyCount: number;
|
||||
replies: IReplyItem[];
|
||||
|
@ -14,4 +15,13 @@ export interface IQuestionItem extends IPostItem {
|
|||
|
||||
// set when isAnswered is true
|
||||
answerReply?: IReplyItem;
|
||||
|
||||
// the category that a question or conversation starter may be tied to (optional)
|
||||
category: string;
|
||||
|
||||
// the type of discussion
|
||||
discussionType: DiscussionType;
|
||||
|
||||
// the page the question was asked on
|
||||
page: string;
|
||||
}
|
||||
|
|
|
@ -10,4 +10,10 @@ export interface IQuestionsFilter {
|
|||
searchText?: string;
|
||||
|
||||
selectedShowQuestionsOption: string;
|
||||
}
|
||||
|
||||
// optional category filter
|
||||
category: string | null;
|
||||
|
||||
// question or conversation
|
||||
discussionType: string;
|
||||
}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
export * from './IBaseItem';
|
||||
export * from './IBaseLookupItem';
|
||||
export * from './ICurrentUser';
|
||||
export * from './IItemInfo';
|
||||
export * from './IPostItem';
|
||||
export * from './IQuestionItem';
|
||||
export * from './IReplyItem';
|
||||
export * from './IPagedItems';
|
||||
export * from './IQuestionsFilter';
|
||||
export * from './IQuestionsFilter';
|
||||
export * from './IFileAttachment';
|
||||
export * from './ICategoryLabelItem';
|
||||
|
|
|
@ -47,8 +47,20 @@ export class BaseService {
|
|||
}
|
||||
}
|
||||
|
||||
public mapBaseItemProperties(sourceItem: any): IBaseItem {
|
||||
public mapBaseItemProperties(sourceItem: any, mapFromStream: boolean = false): IBaseItem {
|
||||
if (sourceItem !== undefined && sourceItem !== null) {
|
||||
if (mapFromStream) {
|
||||
//alert(sourceItem["Created."]);
|
||||
return {
|
||||
id: sourceItem.ID,
|
||||
title: sourceItem.Title,
|
||||
createdDate: sourceItem["Created."] !== null ? new Date(sourceItem["Created."]) : null,
|
||||
modifiedDate: sourceItem["Modified."] !== null ? new Date(sourceItem["Modified."]) : null,
|
||||
author: sourceItem.Author !== null ? this.mapPersonaProps(sourceItem.Author) : null,
|
||||
editor: sourceItem.Editor !== null ? this.mapPersonaProps(sourceItem.Editor) : null,
|
||||
etag: sourceItem.__metadata ? sourceItem.__metadata.etag : new Date().toISOString(),
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
id: sourceItem.ID,
|
||||
title: sourceItem.Title,
|
||||
|
@ -58,6 +70,7 @@ export class BaseService {
|
|||
editor: sourceItem.Editor !== null ? this.mapPersonaProps(sourceItem.Editor) : null,
|
||||
etag: sourceItem.__metadata ? sourceItem.__metadata.etag : new Date().toISOString(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return { id: undefined };
|
||||
|
@ -69,11 +82,18 @@ export class BaseService {
|
|||
let persona: IPersonaProps = {};
|
||||
persona.id = item.Name;
|
||||
persona.text = item.Title;
|
||||
persona.primaryText = item.Title;
|
||||
persona.secondaryText = item.JobTitle;
|
||||
|
||||
return persona;
|
||||
}
|
||||
else if(Array.isArray(item)) {
|
||||
let persona: IPersonaProps = {};
|
||||
persona.id = item[0].email;
|
||||
persona.text = item[0].title;
|
||||
persona.secondaryText = '';
|
||||
|
||||
return persona;
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@ export class NotificationService extends BaseService {
|
|||
emailProps.Subject = emailProps.Subject.substring(0, 252).concat('...');
|
||||
}
|
||||
|
||||
//emailProps.Body = await this.processImages(emailProps.Body);
|
||||
|
||||
if (emailProps.To && emailProps.To.length > 0) {
|
||||
await sp.utility.sendEmail(emailProps)
|
||||
.catch(e => {
|
||||
|
@ -24,4 +26,52 @@ export class NotificationService extends BaseService {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
private async processImages(body: string): Promise<string> {
|
||||
let imgRegex = new RegExp('<img[^>]+src="([^">]+)"', "gi");
|
||||
let webUrl = await sp.web.get()
|
||||
.catch(e => {
|
||||
super.handleHttpError('processImages', e);
|
||||
});
|
||||
|
||||
if (webUrl && webUrl.Url) {
|
||||
let imageUrlsToReplace: string[] = [];
|
||||
let result;
|
||||
while ((result = imgRegex.exec(body)) !== null) {
|
||||
let imageUrl = result[1] as string;
|
||||
if (imageUrl && imageUrl.toLowerCase().startsWith(webUrl.Url.toLowerCase()) && imageUrlsToReplace.indexOf(imageUrl) === -1) {
|
||||
imageUrlsToReplace.push(imageUrl);
|
||||
}
|
||||
}
|
||||
|
||||
for (let imageUrlToReplace of imageUrlsToReplace) {
|
||||
var blob = await sp.web.getFileByUrl(imageUrlToReplace)
|
||||
.getBlob()
|
||||
.catch(e => {
|
||||
super.handleHttpError('processImages', e);
|
||||
});
|
||||
if (blob) {
|
||||
let imageAsData = await this.blobToData(blob)
|
||||
.catch(e => {
|
||||
super.handleHttpError('processImages', e);
|
||||
});
|
||||
|
||||
let imageParts = imageUrlToReplace.split(".");
|
||||
let extension = imageParts[imageParts.length - 1];
|
||||
imageAsData = imageAsData.replace("data:application/octet-stream;", `data:image/${extension};`);
|
||||
body = body.replace(imageUrlToReplace, imageAsData);
|
||||
}
|
||||
}
|
||||
}
|
||||
return body;
|
||||
}
|
||||
|
||||
private blobToData(blob: Blob) {
|
||||
return new Promise<any>((resolve) => {
|
||||
const reader = new FileReader();
|
||||
reader.onloadend = () => resolve(reader.result);
|
||||
reader.readAsDataURL(blob);
|
||||
});
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -9,7 +9,8 @@ import { _RoleAssignment, _RoleDefinition } from '@pnp/sp/security/types';
|
|||
|
||||
export class PermissionService extends BaseService {
|
||||
|
||||
private listTitle = ListTitles.QUESTIONS;
|
||||
private questionsListTitle = ListTitles.QUESTIONS;
|
||||
private questionsAssetsListTitle = ListTitles.QUESTIONS_ASSETS;
|
||||
|
||||
public async canVisitorsAskQuestions(): Promise<boolean> {
|
||||
LogHelper.verbose(this.constructor.name, 'canVisitorsAskQuestions', '');
|
||||
|
@ -19,7 +20,7 @@ export class PermissionService extends BaseService {
|
|||
|
||||
console.log(visitorGroup.Id);
|
||||
|
||||
let roles = await sp.web.lists.getByTitle(this.listTitle).roleAssignments
|
||||
let roles = await sp.web.lists.getByTitle(this.questionsListTitle).roleAssignments
|
||||
.expand('Member', 'RoleDefinitionBindings')
|
||||
.get();
|
||||
|
||||
|
@ -41,9 +42,13 @@ export class PermissionService extends BaseService {
|
|||
|
||||
let canAsk = await this.canVisitorsAskQuestions();
|
||||
if (canAsk === true) {
|
||||
// reset list to inherit parent permissions
|
||||
sp.web.lists.getByTitle(this.listTitle)
|
||||
// reset list to inherit parent permissions for questions
|
||||
sp.web.lists.getByTitle(this.questionsListTitle)
|
||||
.resetRoleInheritance();
|
||||
|
||||
// reset list to inherit parent permissions for questions assets
|
||||
sp.web.lists.getByTitle(this.questionsAssetsListTitle)
|
||||
.resetRoleInheritance();
|
||||
}
|
||||
else {
|
||||
let contributorPerms = await sp.web.roleDefinitions
|
||||
|
@ -53,12 +58,21 @@ export class PermissionService extends BaseService {
|
|||
let visitorGroupId = (await sp.web.associatedVisitorGroup()).Id;
|
||||
|
||||
if (contributorPerms && visitorGroupId) {
|
||||
// break the list inheritance from the parent
|
||||
await sp.web.lists.getByTitle(this.listTitle)
|
||||
// break the list inheritance from the parent for questions
|
||||
await sp.web.lists.getByTitle(this.questionsListTitle)
|
||||
.breakRoleInheritance(true, true);
|
||||
|
||||
// give the visitor group contribute permissions
|
||||
await sp.web.lists.getByTitle(this.listTitle)
|
||||
// give the visitor group contribute permissions for questions
|
||||
await sp.web.lists.getByTitle(this.questionsListTitle)
|
||||
.roleAssignments
|
||||
.add(visitorGroupId, contributorPerms.Id);
|
||||
|
||||
// break the list inheritance from the parent for questions assets
|
||||
await sp.web.lists.getByTitle(this.questionsAssetsListTitle)
|
||||
.breakRoleInheritance(true, true);
|
||||
|
||||
// give the visitor group contribute permissions for questions assets
|
||||
await sp.web.lists.getByTitle(this.questionsAssetsListTitle)
|
||||
.roleAssignments
|
||||
.add(visitorGroupId, contributorPerms.Id);
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
import '@pnp/polyfill-ie11';
|
||||
import { sp, PagedItemCollection, SPBatch } from '@pnp/sp/presets/all';
|
||||
import { sp, SPBatch, IAttachmentFileInfo, IRenderListDataParameters } from '@pnp/sp/presets/all';
|
||||
import { BaseService } from './base.service';
|
||||
import { LogHelper, ContentTypes, ListTitles, StandardFields, PostFields, ReplyFields, QuestionFields, ShowQuestionsOption } from 'utilities';
|
||||
import { IQuestionItem, IPostItem, IReplyItem, ICurrentUser, IQuestionsFilter, IPagedItems } from 'models';
|
||||
import { LogHelper, ContentTypes, ListTitles, StandardFields, PostFields, ReplyFields, QuestionFields, ShowQuestionsOption, DiscussionType } from 'utilities';
|
||||
import { IQuestionItem, IPostItem, IReplyItem, ICurrentUser, IQuestionsFilter, IPagedItems, IFileAttachment, IItemInfo, ICategoryLabelItem } from 'models';
|
||||
import * as strings from 'QuestionsWebPartStrings';
|
||||
|
||||
export class QuestionService extends BaseService {
|
||||
|
||||
|
@ -15,8 +16,12 @@ export class QuestionService extends BaseService {
|
|||
PostFields.DETAILSTEXT,
|
||||
QuestionFields.ISANSWERED,
|
||||
QuestionFields.FOLLOW_EMAILS,
|
||||
PostFields.PAGE,
|
||||
PostFields.LIKE_COUNT,
|
||||
PostFields.LIKE_IDS,
|
||||
// Category and Type
|
||||
PostFields.CATEGORY,
|
||||
PostFields.TYPE,
|
||||
// Standard Created/Modified Columns
|
||||
StandardFields.CREATED,
|
||||
StandardFields.MODIFIED,
|
||||
|
@ -55,6 +60,18 @@ export class QuestionService extends BaseService {
|
|||
StandardFields.EDITOR_TITLE
|
||||
];
|
||||
|
||||
private itemSelectColumns: string[] = [
|
||||
StandardFields.ID,
|
||||
StandardFields.TITLE,
|
||||
PostFields.TYPE,
|
||||
// question this item is related to
|
||||
ReplyFields.QUESTIONLOOKUP_ID,
|
||||
ReplyFields.QUESTIONLOOKUP_TITLE,
|
||||
// parent of this item
|
||||
ReplyFields.REPLYLOOKUP_ID,
|
||||
ReplyFields.REPLYLOOKUP_TITLE,
|
||||
];
|
||||
|
||||
private questionExpandColumns: string[] = [
|
||||
StandardFields.CONTENTTYPE,
|
||||
StandardFields.AUTHOR,
|
||||
|
@ -69,49 +86,42 @@ export class QuestionService extends BaseService {
|
|||
StandardFields.EDITOR
|
||||
];
|
||||
|
||||
private itemExpandColumns: string[] = [
|
||||
ReplyFields.QUESTIONLOOKUP,
|
||||
ReplyFields.REPLYLOOKUP
|
||||
];
|
||||
|
||||
public async getPagedQuestions(currentUser: ICurrentUser, filter: IQuestionsFilter, previousPagedItems: IPagedItems<IQuestionItem>): Promise<IPagedItems<IQuestionItem>> {
|
||||
LogHelper.verbose(this.constructor.name, 'getPagedQuestions', `[filter=${JSON.stringify(filter)}]`);
|
||||
LogHelper.verbose(this.constructor.name, 'getPagedQuestions2', `[filter=${JSON.stringify(filter)}]`);
|
||||
|
||||
let pagedItems: IPagedItems<IQuestionItem> = {
|
||||
items: [],
|
||||
pagedItemCollection: undefined
|
||||
};
|
||||
let pagedItems: IPagedItems<IQuestionItem> = {
|
||||
items: [],
|
||||
nextHref: undefined
|
||||
};
|
||||
|
||||
if (previousPagedItems !== null && previousPagedItems.pagedItemCollection && previousPagedItems.pagedItemCollection.hasNext) {
|
||||
pagedItems.pagedItemCollection = await previousPagedItems.pagedItemCollection.getNext();
|
||||
}
|
||||
else {
|
||||
let filterText = this.getQuestionFilterText(filter);
|
||||
let top = filter.pageSize ? filter.pageSize : 20;
|
||||
let parameters = this.getQuestionFilterParameters(filter);
|
||||
|
||||
pagedItems.pagedItemCollection = <PagedItemCollection<any>>await sp.web.lists.getByTitle(this.listTitle).items
|
||||
.select(this.questionSelectColumns.join(','))
|
||||
.expand(this.questionExpandColumns.join(','))
|
||||
.filter(filterText)
|
||||
.top(top)
|
||||
.orderBy(filter.orderByColumnName, filter.orderByAscending)
|
||||
.getPaged()
|
||||
.catch(e => {
|
||||
super.handleHttpError('getPagedQuestions', e);
|
||||
throw e;
|
||||
});
|
||||
}
|
||||
if (previousPagedItems !== null && previousPagedItems.nextHref) {
|
||||
parameters.Paging = previousPagedItems.nextHref.split('?')[1];
|
||||
}
|
||||
|
||||
if (pagedItems.pagedItemCollection) {
|
||||
for (let questionItem of pagedItems.pagedItemCollection.results) {
|
||||
let question = this.mapQuestion(questionItem, currentUser);
|
||||
let data = await sp.web.lists.getByTitle(this.listTitle).renderListDataAsStream(parameters);
|
||||
|
||||
let currentUserCreatedQuestion: boolean = false;
|
||||
if (currentUser.loginName.toLowerCase() === question.author!.id!.toLowerCase()) {
|
||||
currentUserCreatedQuestion = true;
|
||||
}
|
||||
pagedItems.nextHref = data.NextHref;
|
||||
|
||||
this.updateUserPermissions(currentUser, question, currentUserCreatedQuestion);
|
||||
pagedItems.items.push(question);
|
||||
}
|
||||
}
|
||||
for (let questionItem of data.Row) {
|
||||
let question = this.mapQuestion(questionItem, currentUser, true);
|
||||
|
||||
return pagedItems;
|
||||
let currentUserCreatedQuestion: boolean = false;
|
||||
if (currentUser.loginName.toLowerCase() === question.author!.id!.toLowerCase()) {
|
||||
currentUserCreatedQuestion = true;
|
||||
}
|
||||
|
||||
this.updateUserPermissions(currentUser, question, currentUserCreatedQuestion);
|
||||
pagedItems.items.push(question);
|
||||
}
|
||||
|
||||
return pagedItems;
|
||||
}
|
||||
|
||||
public async getQuestionById(currentUser: ICurrentUser, id: number, skipReplies: boolean = false): Promise<IQuestionItem | null> {
|
||||
|
@ -137,6 +147,10 @@ export class QuestionService extends BaseService {
|
|||
if (question.isAnswered === true) {
|
||||
question.answerReply = flatReplies.find(r => r.isAnswer === true);
|
||||
}
|
||||
|
||||
if(question.id) {
|
||||
question.attachments = await this.getAttachmentsForItem(question.id);
|
||||
}
|
||||
}
|
||||
|
||||
let currentUserCreatedQuestion: boolean = false;
|
||||
|
@ -154,6 +168,58 @@ export class QuestionService extends BaseService {
|
|||
|
||||
}
|
||||
|
||||
public async getAllCategories(): Promise<ICategoryLabelItem[] | null> {
|
||||
LogHelper.verbose(this.constructor.name, 'getAllCategories', "");
|
||||
|
||||
let all = await sp.web.lists.getByTitle(ListTitles.CATEGORY_LABELING).items
|
||||
.orderBy("Title", true)
|
||||
.get()
|
||||
.catch(e => {
|
||||
super.handleHttpError('getAllCategories', e);
|
||||
throw e;
|
||||
});
|
||||
|
||||
return all.map((item: any) => {
|
||||
return this.mapCategoryLabel(item);
|
||||
});
|
||||
}
|
||||
|
||||
public async addCategory(category: string): Promise<void> {
|
||||
LogHelper.verbose(this.constructor.name, 'addCategory', "");
|
||||
|
||||
await sp.web.lists.getByTitle(ListTitles.CATEGORY_LABELING).items
|
||||
.add({ Title: category })
|
||||
.then((iar: any) => {
|
||||
LogHelper.verbose(this.constructor.name, 'addCategory', iar);
|
||||
})
|
||||
.catch(e => {
|
||||
super.handleHttpError('addCategory', e);
|
||||
throw e;
|
||||
});
|
||||
}
|
||||
|
||||
public async getItemInfoById(id: number): Promise<IItemInfo | null> {
|
||||
LogHelper.verbose(this.constructor.name, 'getItemInfoById', `[id:${id}]`);
|
||||
|
||||
let item = await sp.web.lists.getByTitle(this.listTitle).items
|
||||
.getById(id)
|
||||
.select(this.itemSelectColumns.join(','))
|
||||
.expand(this.itemExpandColumns.join(','))
|
||||
.get()
|
||||
.catch(e => {
|
||||
super.handleHttpError('getItemInfoById', e);
|
||||
throw e;
|
||||
});
|
||||
|
||||
if (item !== null) {
|
||||
return this.mapItemInfo(item);
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public async isDuplicateQuestion(question: IQuestionItem): Promise<boolean> {
|
||||
LogHelper.verbose(this.constructor.name, 'isDuplicate', `[title:${question.title}]`);
|
||||
|
||||
|
@ -192,18 +258,16 @@ export class QuestionService extends BaseService {
|
|||
}
|
||||
|
||||
public async deleteQuestion(question: IQuestionItem): Promise<void> {
|
||||
this.deletePostById(question.id!).then(() => {
|
||||
this.deleteReplies(question);
|
||||
});
|
||||
await this.deletePostById(question.id!);
|
||||
await this.deleteReplies(question);
|
||||
}
|
||||
|
||||
public async deleteReply(reply: IReplyItem): Promise<void> {
|
||||
this.deletePostById(reply.id!).then(() => {
|
||||
this.deleteReplies(reply);
|
||||
});
|
||||
await this.deletePostById(reply.id!);
|
||||
await this.deleteReplies(reply);
|
||||
}
|
||||
|
||||
private deleteReplies(item: IReplyItem | IQuestionItem, batch?: SPBatch) {
|
||||
private async deleteReplies(item: IReplyItem | IQuestionItem, batch?: SPBatch) {
|
||||
if (!batch) { batch = sp.createBatch(); }
|
||||
|
||||
for (let reply of item.replies) {
|
||||
|
@ -212,10 +276,10 @@ export class QuestionService extends BaseService {
|
|||
.inBatch(batch)
|
||||
.delete();
|
||||
|
||||
this.deleteReplies(reply);
|
||||
await this.deleteReplies(reply);
|
||||
}
|
||||
|
||||
batch.execute()
|
||||
await batch.execute()
|
||||
.catch(e => {
|
||||
super.handleHttpError('deleteReplies', e);
|
||||
throw e;
|
||||
|
@ -242,6 +306,7 @@ export class QuestionService extends BaseService {
|
|||
item[StandardFields.TITLE] = question.title;
|
||||
item[PostFields.DETAILS] = question.details;
|
||||
item[PostFields.DETAILSTEXT] = question.detailsText;
|
||||
item[PostFields.CATEGORY] = question.category;
|
||||
|
||||
let contentType = await sp.web.lists.getByTitle(this.listTitle).contentTypes
|
||||
.filter(`Name eq '${ContentTypes.QUESTION}'`)
|
||||
|
@ -253,7 +318,9 @@ export class QuestionService extends BaseService {
|
|||
|
||||
item[StandardFields.CONTENTTYPEID] = contentType[0].StringId;
|
||||
|
||||
//Decision for UPDATE or ADD
|
||||
if (question.id != null && question.id !== 0) {
|
||||
//UPDATE
|
||||
LogHelper.verbose(this.constructor.name, 'saveQuestion', `update [id:${question.id}]`);
|
||||
|
||||
let result: any = await sp.web.lists.getByTitle(this.listTitle).items
|
||||
|
@ -261,7 +328,7 @@ export class QuestionService extends BaseService {
|
|||
.update(item)
|
||||
.catch(e => {
|
||||
super.handleHttpError('saveQuestion', e);
|
||||
throw e;
|
||||
throw new Error(question.discussionType === DiscussionType.Question ? strings.ErrorMessage_QuestionUpdate : strings.ErrorMessage_ConversationUpdate);
|
||||
});
|
||||
|
||||
if (!result) {
|
||||
|
@ -271,15 +338,18 @@ export class QuestionService extends BaseService {
|
|||
itemId = question.id;
|
||||
}
|
||||
else {
|
||||
//ADD
|
||||
LogHelper.verbose(this.constructor.name, 'saveQuestion', `add`);
|
||||
|
||||
item[PostFields.PAGE] = { Url: question.page };
|
||||
item[QuestionFields.FOLLOW_EMAILS] = question.followEmails.join(';');
|
||||
item[PostFields.TYPE] = question.discussionType;
|
||||
|
||||
let result: any = await sp.web.lists.getByTitle(this.listTitle).items
|
||||
.add(item)
|
||||
.catch(e => {
|
||||
super.handleHttpError('saveQuestion', e);
|
||||
throw e;
|
||||
throw new Error(question.discussionType === DiscussionType.Question ? strings.ErrorMessage_QuestionAdd : strings.ErrorMessage_ConversationAdd);
|
||||
});
|
||||
|
||||
if (!result) {
|
||||
|
@ -289,6 +359,14 @@ export class QuestionService extends BaseService {
|
|||
itemId = result.data.Id;
|
||||
}
|
||||
|
||||
if(question.removedAttachments && question.removedAttachments.length > 0) {
|
||||
await this.deleteAttachmentsFromItem(itemId, question.removedAttachments);
|
||||
}
|
||||
|
||||
if(question.newAttachments && question.newAttachments.length > 0) {
|
||||
await this.addAttachmentsToItem(itemId, question.newAttachments);
|
||||
}
|
||||
|
||||
return itemId;
|
||||
}
|
||||
|
||||
|
@ -312,6 +390,10 @@ export class QuestionService extends BaseService {
|
|||
reply.replies = this.buildReplyTree(flatReplies, [], reply, true);
|
||||
}
|
||||
|
||||
if(reply.id) {
|
||||
reply.attachments = await this.getAttachmentsForItem(reply.id);
|
||||
}
|
||||
|
||||
let currentUserCreatedQuestion: boolean = false;
|
||||
if (reply.parentQuestionId) {
|
||||
let question = await this.getQuestionById(currentUser, reply.parentQuestionId!, true);
|
||||
|
@ -383,9 +465,80 @@ export class QuestionService extends BaseService {
|
|||
itemId = result.data.Id;
|
||||
}
|
||||
|
||||
if(reply.removedAttachments && reply.removedAttachments.length > 0) {
|
||||
await this.deleteAttachmentsFromItem(itemId, reply.removedAttachments);
|
||||
}
|
||||
|
||||
if(reply.newAttachments && reply.newAttachments.length > 0) {
|
||||
await this.addAttachmentsToItem(itemId, reply.newAttachments);
|
||||
}
|
||||
|
||||
return itemId;
|
||||
}
|
||||
|
||||
public async getAttachmentsForItem(id: number): Promise<IFileAttachment[]> {
|
||||
LogHelper.verbose(this.constructor.name, 'getAttachmentsForItem', `[id:${id}]`);
|
||||
|
||||
let attachments = await sp.web.lists.getByTitle(this.listTitle).items
|
||||
.getById(id)
|
||||
.attachmentFiles()
|
||||
.catch(e => {
|
||||
super.handleHttpError('getAttachmentsForItem', e);
|
||||
throw e;
|
||||
});
|
||||
|
||||
let fileAttachments: IFileAttachment[] = [];
|
||||
for(let attachment of attachments) {
|
||||
fileAttachments.push( {
|
||||
fileName: attachment.FileName,
|
||||
serverRelativeUrl: attachment.ServerRelativeUrl,
|
||||
isAttached: true
|
||||
});
|
||||
}
|
||||
return fileAttachments;
|
||||
}
|
||||
|
||||
public async addAttachmentsToItem(id: number, attachments: File[]): Promise<void> {
|
||||
LogHelper.verbose(this.constructor.name, 'addAttachmentsToItem', `[id:${id},attachmentsCount:${attachments.length}]`);
|
||||
|
||||
if(attachments && attachments.length > 0) {
|
||||
let fileInfos: IAttachmentFileInfo[] = [];
|
||||
|
||||
attachments.map(attachment => {
|
||||
fileInfos.push({
|
||||
name: encodeURIComponent(attachment.name),
|
||||
content: attachment
|
||||
});
|
||||
});
|
||||
|
||||
await sp.web.lists.getByTitle(this.listTitle).items
|
||||
.getById(id)
|
||||
.attachmentFiles
|
||||
.addMultiple(fileInfos)
|
||||
.catch(e => {
|
||||
super.handleHttpError('addAttachmentsToItem', e);
|
||||
throw new Error(strings.ErrorMessage_AttachmentsAdd);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public async deleteAttachmentsFromItem(id: number, attachmentNames: string[]): Promise<void> {
|
||||
LogHelper.verbose(this.constructor.name, 'deleteAttachmentsFromItem', `[id:${id},attachmentNames:${attachmentNames.join(",")}]`);
|
||||
|
||||
if(attachmentNames && attachmentNames.length > 0) {
|
||||
attachmentNames = attachmentNames.map(a => encodeURIComponent(a));
|
||||
|
||||
await sp.web.lists.getByTitle(this.listTitle).items
|
||||
.getById(id)
|
||||
.attachmentFiles
|
||||
.deleteMultiple(...attachmentNames)
|
||||
.catch(e => {
|
||||
super.handleHttpError('deleteAttachmentsFromItem', e);
|
||||
throw new Error(strings.ErrorMessage_AttachmentsRemove);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public async markAnswer(reply: IReplyItem): Promise<void> {
|
||||
if (reply !== null && reply.id != null && reply.id !== 0) {
|
||||
LogHelper.verbose(this.constructor.name, 'markAnswer', `update [id:${reply.id}]`);
|
||||
|
@ -448,6 +601,23 @@ export class QuestionService extends BaseService {
|
|||
}
|
||||
}
|
||||
|
||||
public async updateDiscussionType(question: IQuestionItem): Promise<void> {
|
||||
let item = {};
|
||||
if (question.id != null && question.id !== 0) {
|
||||
item[QuestionFields.DISCUSSION_TYPE] = question.discussionType;
|
||||
|
||||
LogHelper.verbose(this.constructor.name, 'updateDiscussionType', `update [id:${question.id}]`);
|
||||
|
||||
await sp.web.lists.getByTitle(this.listTitle).items
|
||||
.getById(question.id)
|
||||
.update(item)
|
||||
.catch(e => {
|
||||
super.handleHttpError('updateDiscussionType', e);
|
||||
throw e;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public async updateHelpful(updateItem: IReplyItem): Promise<void> {
|
||||
let item = {};
|
||||
if (updateItem.id != null && updateItem.id !== 0) {
|
||||
|
@ -487,6 +657,11 @@ export class QuestionService extends BaseService {
|
|||
|
||||
for (let replyItem of replyItems) {
|
||||
let reply = this.mapReply(replyItem, currentUser);
|
||||
|
||||
if(reply.id) {
|
||||
reply.attachments = await this.getAttachmentsForItem(reply.id);
|
||||
}
|
||||
|
||||
replies.push(reply);
|
||||
}
|
||||
|
||||
|
@ -510,40 +685,96 @@ export class QuestionService extends BaseService {
|
|||
return replyTree;
|
||||
}
|
||||
|
||||
private getQuestionFilterText(filter: IQuestionsFilter): string {
|
||||
let filterText = '';
|
||||
private getQuestionFilterParameters(filter: IQuestionsFilter): IRenderListDataParameters {
|
||||
|
||||
filterText = `${StandardFields.CONTENTTYPE} eq '${ContentTypes.QUESTION}'`;
|
||||
// from the search box
|
||||
if (filter.searchText && filter.searchText.length > 0) {
|
||||
let encodedSearchText = encodeURIComponent(filter.searchText.replace(`'`, `''`));
|
||||
const rowLimit = `<RowLimit Paged="TRUE">${filter.pageSize}</RowLimit>`;
|
||||
const orderBy = `<OrderBy><FieldRef Name='${filter.orderByColumnName}' Ascending='${filter.orderByAscending === true ? "TRUE" : "FALSE"}' /></OrderBy>`;
|
||||
// filter.orderByColumnName, filter.orderByAscending
|
||||
let whereClause = "";
|
||||
|
||||
filterText += ` and substringof('${encodedSearchText}',${StandardFields.TITLE})`;
|
||||
// only questions and not replies
|
||||
if (filter.searchText && filter.searchText.length > 0) {
|
||||
let encodedSearchText = filter.searchText.trim();
|
||||
const titleFilter = `<Contains><FieldRef Name='${StandardFields.TITLE}' /><Value Type="Text"><![CDATA[${encodedSearchText}]]></Value></Contains>`;
|
||||
const detailsFilter = `<Contains><FieldRef Name='${PostFields.DETAILSTEXT}' /><Value Type="Note"><![CDATA[${encodedSearchText}]]></Value></Contains>`;
|
||||
whereClause = `<Or>${titleFilter}${detailsFilter}</Or>`;
|
||||
}
|
||||
|
||||
}
|
||||
// filter to only question content type
|
||||
if(whereClause.length > 0) {
|
||||
whereClause = `<And>${whereClause}<Eq><FieldRef Name='${StandardFields.CONTENTTYPE}' /><Value Type='Computed'>${ContentTypes.QUESTION}</Value></Eq></And>`;
|
||||
}
|
||||
else {
|
||||
whereClause = `<Eq><FieldRef Name='${StandardFields.CONTENTTYPE}' /><Value Type='Computed'>${ContentTypes.QUESTION}</Value></Eq>`;
|
||||
}
|
||||
|
||||
switch (filter.selectedShowQuestionsOption) {
|
||||
case ShowQuestionsOption.Answered:
|
||||
filterText += `and ${QuestionFields.ISANSWERED} eq 1`;
|
||||
break;
|
||||
case ShowQuestionsOption.Open:
|
||||
filterText += `and ${QuestionFields.ISANSWERED} eq 0`;
|
||||
break;
|
||||
}
|
||||
// filter opened vs answered
|
||||
switch (filter.selectedShowQuestionsOption) {
|
||||
case ShowQuestionsOption.Answered:
|
||||
whereClause = `<And>${whereClause}<Eq><FieldRef Name='${QuestionFields.ISANSWERED}' /><Value Type='Boolean'>1</Value></Eq></And>`;
|
||||
break;
|
||||
case ShowQuestionsOption.Open:
|
||||
whereClause = `<And>${whereClause}<Eq><FieldRef Name='${QuestionFields.ISANSWERED}' /><Value Type='Boolean'>0</Value></Eq></And>`;
|
||||
break;
|
||||
}
|
||||
|
||||
return filterText;
|
||||
// filter on category
|
||||
if (!(filter.category === null || filter.category === undefined || filter.category === '')) {
|
||||
whereClause = `<And>${whereClause}<Eq><FieldRef Name='${PostFields.CATEGORY}' /><Value Type='Text'><![CDATA[${filter.category}]]></Value></Eq></And>`;
|
||||
}
|
||||
|
||||
// filter to only conversations or questions
|
||||
if(filter.discussionType) {
|
||||
whereClause = `<And>${whereClause}<Eq><FieldRef Name='${QuestionFields.DISCUSSION_TYPE}' /><Value Type='Text'>${filter.discussionType}</Value></Eq></And>`;
|
||||
}
|
||||
|
||||
let camlQuery: IRenderListDataParameters = {
|
||||
RenderOptions: 2,
|
||||
ViewXml: `
|
||||
<View>
|
||||
<ViewFields>
|
||||
<FieldRef Name='${StandardFields.ID}' />
|
||||
<FieldRef Name='${StandardFields.TITLE}' />
|
||||
<FieldRef Name='${PostFields.DETAILS}' />
|
||||
<FieldRef Name='${PostFields.DETAILSTEXT}' />
|
||||
<FieldRef Name='${QuestionFields.ISANSWERED}' />
|
||||
<FieldRef Name='${QuestionFields.FOLLOW_EMAILS}' />
|
||||
<FieldRef Name='${PostFields.LIKE_COUNT}' />
|
||||
<FieldRef Name='${PostFields.LIKE_IDS}' />
|
||||
<FieldRef Name='${PostFields.CATEGORY}' />
|
||||
<FieldRef Name='${PostFields.TYPE}' />
|
||||
<FieldRef Name='${StandardFields.CREATED}' />
|
||||
<FieldRef Name='${StandardFields.MODIFIED}' />
|
||||
<FieldRef Name='${StandardFields.AUTHOR}' />
|
||||
<FieldRef Name='${StandardFields.EDITOR}' />
|
||||
</ViewFields>
|
||||
<Query>
|
||||
<Where>
|
||||
${whereClause}
|
||||
</Where>
|
||||
${orderBy}
|
||||
</Query>
|
||||
${rowLimit}
|
||||
</View>`
|
||||
};
|
||||
|
||||
return camlQuery;
|
||||
}
|
||||
|
||||
private mapQuestion(item: any, currentUser: ICurrentUser): IQuestionItem {
|
||||
private mapQuestion(item: any, currentUser: ICurrentUser, mapFromStream: boolean = false): IQuestionItem {
|
||||
// Map Base Properties (id, created/modified info)
|
||||
let base = super.mapBaseItemProperties(item);
|
||||
let base = super.mapBaseItemProperties(item, mapFromStream);
|
||||
|
||||
let isAnswered = item[QuestionFields.ISANSWERED];
|
||||
// deal with Yes/No in RenderListDataAsStream
|
||||
if(typeof(item[QuestionFields.ISANSWERED]) === "string") {
|
||||
isAnswered = (item[QuestionFields.ISANSWERED] as string).toLowerCase() === 'yes' ? true : false;
|
||||
}
|
||||
|
||||
let question: IQuestionItem = {
|
||||
...base,
|
||||
details: item[PostFields.DETAILS],
|
||||
detailsText: item[PostFields.DETAILSTEXT],
|
||||
isAnswered: item[QuestionFields.ISANSWERED],
|
||||
isAnswered: isAnswered,
|
||||
totalReplyCount: 0,
|
||||
likeCount: 0,
|
||||
likeIds: [],
|
||||
|
@ -554,7 +785,13 @@ export class QuestionService extends BaseService {
|
|||
canEdit: false,
|
||||
canReact: false,
|
||||
canReply: false,
|
||||
replies: []
|
||||
replies: [],
|
||||
category: item[PostFields.CATEGORY],
|
||||
discussionType: item[PostFields.TYPE],
|
||||
page: item[PostFields.PAGE],
|
||||
attachments: [],
|
||||
newAttachments: [],
|
||||
removedAttachments: []
|
||||
};
|
||||
|
||||
this.mapLikeInfo(item[PostFields.LIKE_IDS], question, currentUser);
|
||||
|
@ -586,7 +823,10 @@ export class QuestionService extends BaseService {
|
|||
canMarkAsAnswer: false,
|
||||
canReact: false,
|
||||
canReply: false,
|
||||
replies: []
|
||||
replies: [],
|
||||
attachments: [],
|
||||
newAttachments: [],
|
||||
removedAttachments: []
|
||||
};
|
||||
|
||||
this.mapLikeInfo(item[PostFields.LIKE_IDS], reply, currentUser);
|
||||
|
@ -594,6 +834,26 @@ export class QuestionService extends BaseService {
|
|||
return reply;
|
||||
}
|
||||
|
||||
private mapCategoryLabel(item: any): ICategoryLabelItem {
|
||||
let base = super.mapBaseItemProperties(item);
|
||||
let cat: ICategoryLabelItem = {
|
||||
...base
|
||||
};
|
||||
return cat;
|
||||
}
|
||||
|
||||
private mapItemInfo(item: any): IItemInfo {
|
||||
let itemInfo: IItemInfo = {
|
||||
id: item.ID,
|
||||
title: item.Title,
|
||||
parentQuestionId: super.getLookupId(item[ReplyFields.QUESTIONLOOKUP]),
|
||||
parentReplyId: super.getLookupId(item[ReplyFields.REPLYLOOKUP]),
|
||||
discussionType: item[PostFields.TYPE]
|
||||
};
|
||||
|
||||
return itemInfo;
|
||||
}
|
||||
|
||||
private mapFollowInfo(ids: string, updateItem: IQuestionItem, currentUser: ICurrentUser) {
|
||||
let currentUserMatch: boolean = false;
|
||||
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
import { sp, IWebInfo } from '@pnp/sp/presets/all';
|
||||
import { LogHelper, ListNames, ListTitles } from 'utilities';
|
||||
import { BaseService } from './base.service';
|
||||
|
||||
export class QuestionsAssetsService extends BaseService {
|
||||
|
||||
public async uploadImageToQuestionsAssets(questionTitle: string, blobInfo: any, onUploadProgress) : Promise<string> {
|
||||
LogHelper.verbose('usePageApi', 'uploadImageToSiteAssetsAsync', ``);
|
||||
|
||||
var web: IWebInfo = await sp.web
|
||||
.expand('Url', 'ServerRelativeUrl')
|
||||
.get();
|
||||
|
||||
var uniqueId = Math.floor(Math.random() * 10000); // get a 4 digit random number
|
||||
var folderName = questionTitle.replace('?', '').replace(/[\W_]+/g, '-');
|
||||
var folderPath = `${web.ServerRelativeUrl}/${ListNames.QUESTIONS_ASSETS}`;
|
||||
var imageName = `${uniqueId}_${blobInfo.blob().name}`;
|
||||
var imageUrl = `${web.Url}/${ListNames.QUESTIONS_ASSETS}/${folderName}/${imageName}`;
|
||||
|
||||
// ensure our folders exist before we try to add files
|
||||
if(folderName && folderName.length > 0) {
|
||||
folderPath += `/${folderName}`;
|
||||
await sp.web.lists.getByTitle(ListTitles.QUESTIONS_ASSETS).rootFolder.folders.add(`${folderName}`);
|
||||
}
|
||||
|
||||
onUploadProgress(0);
|
||||
|
||||
// chunk if bigger than 5 MB
|
||||
const chunkSize = 5242880;
|
||||
|
||||
if (blobInfo.blob().size <= chunkSize) {
|
||||
// small upload
|
||||
await sp.web.getFolderByServerRelativeUrl(folderPath).files
|
||||
.add(imageName, blobInfo.blob(), true);
|
||||
|
||||
return imageUrl;
|
||||
}
|
||||
else {
|
||||
// large upload
|
||||
await sp.web.getFolderByServerRelativeUrl(folderPath).files.addChunked(imageName, blobInfo.blob(), data => {
|
||||
var percentComplete = data.blockNumber / data.totalBlocks * 100;
|
||||
onUploadProgress(percentComplete);
|
||||
}, true, chunkSize);
|
||||
|
||||
return imageUrl;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,8 +1,13 @@
|
|||
import '@pnp/polyfill-ie11';
|
||||
import { sp, PermissionKind, ISiteGroupInfo } from '@pnp/sp/presets/all';
|
||||
import '@pnp/sp/webs';
|
||||
import '@pnp/sp/site-users/web';
|
||||
import { sp, PermissionKind, ISiteGroupInfo, ISiteUserProps } from '@pnp/sp/presets/all';
|
||||
import { BaseService } from './base.service';
|
||||
import { LogHelper, ListTitles, NotificationGroup } from 'utilities';
|
||||
import { LogHelper, ListTitles, NotificationGroup, UserFields } from 'utilities';
|
||||
import { ICurrentUser } from 'models';
|
||||
import { PrincipalType, PrincipalSource } from '@pnp/sp';
|
||||
import { IPeoplePickerEntity } from '@pnp/sp/profiles';
|
||||
import { ISiteUserInfo } from '@pnp/sp/site-users/types';
|
||||
|
||||
export class UserService extends BaseService {
|
||||
|
||||
|
@ -24,7 +29,7 @@ export class UserService extends BaseService {
|
|||
});
|
||||
|
||||
if (result) {
|
||||
this.currentUser = {
|
||||
let currentUser = {
|
||||
id: result.Id,
|
||||
loginName: result.LoginName.toLocaleLowerCase(),
|
||||
email: result.Email,
|
||||
|
@ -38,8 +43,10 @@ export class UserService extends BaseService {
|
|||
canManagePermissions: false
|
||||
};
|
||||
|
||||
await sp.web.ensureUser(this.currentUser.loginName);
|
||||
await this.updatePermissionInfo(this.currentUser);
|
||||
await sp.web.ensureUser(currentUser.loginName);
|
||||
await this.updatePermissionInfo(currentUser);
|
||||
|
||||
this.currentUser = currentUser;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -134,4 +141,44 @@ export class UserService extends BaseService {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async searchPeople(input: string, maxCount: number): Promise<ISiteUserProps[]> {
|
||||
let result: ISiteUserProps[] = <ISiteUserProps[]>await sp.web.siteUsers
|
||||
.filter(`(substringof('${input}',${UserFields.EMAIL}) or substringof('${input}',${UserFields.TITLE})) and ${UserFields.PRINCIPAL_TYPE} eq 1`)
|
||||
.top(maxCount).get()
|
||||
.catch(e => { super.handleHttpError('searchPeople', e); });
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public async searchPeoplePicker(input: string, maxCount: number): Promise<IPeoplePickerEntity[]> {
|
||||
let result: IPeoplePickerEntity[] = <IPeoplePickerEntity[]>await sp.profiles
|
||||
.clientPeoplePickerSearchUser(
|
||||
{
|
||||
QueryString: input,
|
||||
AllowEmailAddresses: true,
|
||||
AllowOnlyEmailAddresses: false,
|
||||
PrincipalSource: PrincipalSource.All,
|
||||
PrincipalType: PrincipalType.User,
|
||||
MaximumEntitySuggestions: maxCount
|
||||
}
|
||||
)
|
||||
.catch(e => { super.handleHttpError('searchPeople', e); });
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public async ensureUserInSite(email: string): Promise<boolean> {
|
||||
let response: boolean = false;
|
||||
|
||||
await sp.web.siteUsers.getByEmail(email).get()
|
||||
.then((user: ISiteUserInfo) => {
|
||||
response = (user !== null);
|
||||
})
|
||||
.catch( e => {
|
||||
super.handleHttpError('ensureUserInSite', e);
|
||||
});
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*/
|
||||
/**
|
||||
* Jquery integration plugin.
|
||||
*
|
||||
* @class tinymce.core.JqueryIntegration
|
||||
* @private
|
||||
*/
|
||||
!function(){var f,c,u,s=[],p="undefined"!=typeof global?global:window,d=p.jQuery,v=function(){
|
||||
// Reference to tinymce needs to be lazily evaluated since tinymce
|
||||
// might be loaded through the compressor or other means
|
||||
return p.tinymce};d.fn.tinymce=function(o){var e,t,i,l=this,r="";
|
||||
// No match then just ignore the call
|
||||
if(!l.length)return l;
|
||||
// Get editor instance
|
||||
if(!o)return v()?v().get(l[0].id):null;l.css("visibility","hidden");// Hide textarea to avoid flicker
|
||||
var n,a=function(){var a=[],c=0;
|
||||
// Apply patches to the jQuery object, only once
|
||||
u||(m(),u=!0),
|
||||
// Create an editor instance for each matched node
|
||||
l.each(function(e,t){var n,i=t.id,r=o.oninit;
|
||||
// Generate unique id for target element if needed
|
||||
i||(t.id=i=v().DOM.uniqueId()),
|
||||
// Only init the editor once
|
||||
v().get(i)||(
|
||||
// Create editor instance and render it
|
||||
n=v().createEditor(i,o),a.push(n),n.on("init",function(){var e,t=r;l.css("visibility",""),
|
||||
// Run this if the oninit setting is defined
|
||||
// this logic will fire the oninit callback ones each
|
||||
// matched editor instance is initialized
|
||||
r&&++c==a.length&&("string"==typeof t&&(e=-1===t.indexOf(".")?null:v().resolve(t.replace(/\.\w+$/,"")),t=v().resolve(t)),
|
||||
// Call the oninit function with the object
|
||||
t.apply(e||v(),a))}))}),
|
||||
// Render the editor instances in a separate loop since we
|
||||
// need to have the full editors array used in the onInit calls
|
||||
d.each(a,function(e,t){t.render()})};
|
||||
// Load TinyMCE on demand, if we need to
|
||||
return p.tinymce||c||!(e=o.script_url)?
|
||||
// Delay the init call until tinymce is loaded
|
||||
1===c?s.push(a):a():(c=1,t=e.substring(0,e.lastIndexOf("/")),
|
||||
// Check if it's a dev/src version they want to load then
|
||||
// make sure that all plugins, themes etc are loaded in source mode as well
|
||||
-1!=e.indexOf(".min")&&(r=".min"),
|
||||
// Setup tinyMCEPreInit object this will later be used by the TinyMCE
|
||||
// core script to locate other resources like CSS files, dialogs etc
|
||||
// You can also predefined a tinyMCEPreInit object and then it will use that instead
|
||||
p.tinymce=p.tinyMCEPreInit||{base:t,suffix:r},
|
||||
// url contains gzip then we assume it's a compressor
|
||||
-1!=e.indexOf("gzip")&&(i=o.language||"en",e=e+(/\?/.test(e)?"&":"?")+"js=true&core=true&suffix="+escape(r)+"&themes="+escape(o.theme||"modern")+"&plugins="+escape(o.plugins||"")+"&languages="+(i||""),
|
||||
// Check if compressor script is already loaded otherwise setup a basic one
|
||||
p.tinyMCE_GZ||(p.tinyMCE_GZ={start:function(){var n=function(e){v().ScriptLoader.markDone(v().baseURI.toAbsolute(e))};
|
||||
// Add core languages
|
||||
n("langs/"+i+".js"),
|
||||
// Add themes with languages
|
||||
n("themes/"+o.theme+"/theme"+r+".js"),n("themes/"+o.theme+"/langs/"+i+".js"),
|
||||
// Add plugins with languages
|
||||
d.each(o.plugins.split(","),function(e,t){t&&(n("plugins/"+t+"/plugin"+r+".js"),n("plugins/"+t+"/langs/"+i+".js"))})},end:function(){}})),(n=document.createElement("script")).type="text/javascript",n.onload=n.onreadystatechange=function(e){e=e||window.event,2===c||"load"!=e.type&&!/complete|loaded/.test(n.readyState)||(v().dom.Event.domLoaded=1,c=2,
|
||||
// Execute callback after mainscript has been loaded and before the initialization occurs
|
||||
o.script_loaded&&o.script_loaded(),a(),d.each(s,function(e,t){t()}))},n.src=e,document.body.appendChild(n)),l},
|
||||
// Add :tinymce pseudo selector this will select elements that has been converted into editor instances
|
||||
// it's now possible to use things like $('*:tinymce') to get all TinyMCE bound elements.
|
||||
d.extend(d.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in p&&(t=v().get(e.id))&&t.editorManager===v())}});
|
||||
// This function patches internal jQuery functions so that if
|
||||
// you for example remove an div element containing an editor it's
|
||||
// automatically destroyed by the TinyMCE API
|
||||
var m=function(){
|
||||
// Removes any child editor instances by looking for editor wrapper elements
|
||||
var r=function(e){
|
||||
// If the function is remove
|
||||
"remove"===e&&this.each(function(e,t){var n=l(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=v().get(t.id.replace(/_parent$/,""));n&&n.remove()})},o=function(i){var e,t=this;
|
||||
// Handle set value
|
||||
/*jshint eqnull:true */if(null!=i)r.call(t),
|
||||
// Saves the contents before get/set value of textarea/div
|
||||
t.each(function(e,t){var n;(n=v().get(t.id))&&n.setContent(i)});else if(0<t.length&&(e=v().get(t[0].id)))return e.getContent()},l=function(e){var t=null;return e&&e.id&&p.tinymce&&(t=v().get(e.id)),t},u=function(e){return!!(e&&e.length&&p.tinymce&&e.is(":tinymce"))},s={};
|
||||
// Loads or saves contents from/to textarea if the value
|
||||
// argument is defined it will set the TinyMCE internal contents
|
||||
// Patch some setter/getter functions these will
|
||||
// now be able to set/get the contents of editor instances for
|
||||
// example $('#editorid').html('Content'); will update the TinyMCE iframe instance
|
||||
d.each(["text","html","val"],function(e,t){var a=s[t]=d.fn[t],c="text"===t;d.fn[t]=function(e){var t=this;if(!u(t))return a.apply(t,arguments);if(e!==f)return o.call(t.filter(":tinymce"),e),a.apply(t.not(":tinymce"),arguments),t;// return original set for chaining
|
||||
var i="",r=arguments;return(c?t:t.eq(0)).each(function(e,t){var n=l(t);i+=n?c?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):a.apply(d(t),r)}),i}}),
|
||||
// Makes it possible to use $('#id').append("content"); to append contents to the TinyMCE editor iframe
|
||||
d.each(["append","prepend"],function(e,t){var n=s[t]=d.fn[t],r="prepend"===t;d.fn[t]=function(i){var e=this;return u(e)?i!==f?("string"==typeof i&&e.filter(":tinymce").each(function(e,t){var n=l(t);n&&n.setContent(r?i+n.getContent():n.getContent()+i)}),n.apply(e.not(":tinymce"),arguments),e):void 0:n.apply(e,arguments)}}),
|
||||
// Makes sure that the editor instance gets properly destroyed when the parent element is removed
|
||||
d.each(["remove","replaceWith","replaceAll","empty"],function(e,t){var n=s[t]=d.fn[t];d.fn[t]=function(){return r.call(this,t),n.apply(this,arguments)}}),s.attr=d.fn.attr,
|
||||
// Makes sure that $('#tinymce_id').attr('value') gets the editors current HTML contents
|
||||
d.fn.attr=function(e,t){var n=this,i=arguments;if(!e||"value"!==e||!u(n))return s.attr.apply(n,i);if(t!==f)return o.call(n.filter(":tinymce"),t),s.attr.apply(n.not(":tinymce"),i),n;// return original set for chaining
|
||||
var r=n[0],a=l(r);return a?a.getContent({save:!0}):s.attr.apply(d(r),i)}}}();
|
|
@ -0,0 +1,3 @@
|
|||
This is where language files should be placed.
|
||||
|
||||
Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/
|
|
@ -0,0 +1,504 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
9
samples/react-questions-and-answers/src/tinymce/plugins/advlist/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var n,e,t,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(n,e,t){var r="UL"===e?"InsertUnorderedList":"InsertOrderedList";n.execCommand(r,!1,!1===t?null:{"list-style-type":t})},l=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(n){return function(){return n}},s=i(!1),c=i(!0),o=function(){return a},a=(n=function(n){return n.isNone()},{fold:function(n,e){return n()},is:s,isSome:s,isNone:c,getOr:t=function(n){return n},getOrThunk:e=function(n){return n()},getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:t,orThunk:e,map:o,each:function(){},bind:o,exists:s,forall:c,filter:o,equals:n,equals_:n,toArray:function(){return[]},toString:i("none()")}),d=function(t){var n=i(t),e=function(){return o},r=function(n){return n(t)},o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:c,isNone:s,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(n){return d(n(t))},each:function(n){n(t)},bind:r,exists:r,forall:r,filter:function(n){return n(t)?o:a},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(s,function(n){return e(t,n)})}};return o},f=function(n){return null===n||n===undefined?a:d(n)},g=function(n){return n&&/^(TH|TD)$/.test(n.nodeName)},m=function(r){return function(n){return n&&/^(OL|UL|DL)$/.test(n.nodeName)&&(t=n,(e=r).$.contains(e.getBody(),t));var e,t}},p=function(n,e,t){var r=function(n,e){for(var t=0;t<n.length;t++){if(e(n[t]))return t}return-1}(e.parents,g),o=-1!==r?e.parents.slice(0,r):e.parents,i=l.grep(o,m(n));return 0<i.length&&i[0].nodeName===t},y=function(o,n,e,t,r,i){o.ui.registry.addSplitButton(n,{tooltip:e,icon:"OL"===r?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:function(n){n(l.map(i,function(n){return{type:"choiceitem",value:"default"===n?"":n,icon:"list-"+("OL"===r?"num":"bull")+"-"+("disc"===n||"decimal"===n?"default":n),text:n.replace(/\-/g," ").replace(/\b\w/g,function(n){return n.toUpperCase()})}}))},onAction:function(){return o.execCommand(t)},onItemAction:function(n,e){u(o,r,e)},select:function(e){var n,t,r;return(t=(n=o).dom.getParent(n.selection.getNode(),"ol,ul"),r=n.dom.getStyle(t,"listStyleType"),f(r)).map(function(n){return e===n}).getOr(!1)},onSetup:function(e){var n=function(n){e.setActive(p(o,n,r))};return o.on("NodeChange",n),function(){return o.off("NodeChange",n)}}})},h=function(n,e,t,r,o,i){var u,l,s,c,a;1<i.length?y(n,e,t,r,o,i):(l=e,s=t,c=r,a=o,(u=n).ui.registry.addToggleButton(l,{active:!1,tooltip:s,icon:"OL"===a?"ordered-list":"unordered-list",onSetup:function(e){var n=function(n){e.setActive(p(u,n,a))};return u.on("NodeChange",n),function(){return u.off("NodeChange",n)}},onAction:function(){return u.execCommand(c)}}))};r.add("advlist",function(n){var t,e,r,o;n.hasPlugin("lists")?(h(e=n,"numlist","Numbered list","InsertOrderedList","OL",(r=e.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"))?r.split(/[ ,]/):[]),h(e,"bullist","Bullet list","InsertUnorderedList","UL",(o=e.getParam("advlist_bullet_styles","default,circle,square"))?o.split(/[ ,]/):[]),(t=n).addCommand("ApplyUnorderedListStyle",function(n,e){u(t,"UL",e["list-style-type"])}),t.addCommand("ApplyOrderedListStyle",function(n,e){u(t,"OL",e["list-style-type"])})):console.error("Please use the Lists plugin together with the Advanced List plugin.")})}();
|
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),o=tinymce.util.Tools.resolve("tinymce.util.Tools"),a="a:not([href])",n=function(e){return e.getAttribute("id")||e.getAttribute("name")||""},r=function(e){return(t=e)&&"a"===t.nodeName.toLowerCase()&&!e.getAttribute("href")&&""!==n(e);var t},c=function(e){var n=e.dom;t(n).walk(e.selection.getRng(),function(e){o.each(e,function(e){var t;r(t=e)&&!t.firstChild&&n.remove(e,!1)})})},u=function(e){return e.dom.getParent(e.selection.getStart(),a)},i=function(e,t){var n,o,a,r,i,l=u(e);l?(a=e,r=t,(i=l).removeAttribute("name"),i.id=r,a.addVisual(),a.undoManager.add()):(o=t,(n=e).undoManager.transact(function(){n.getParam("allow_html_in_named_anchor",!1,"boolean")||n.selection.collapse(!0),n.selection.isCollapsed()?n.insertContent(n.dom.createHTML("a",{id:o})):(c(n),n.formatter.remove("namedAnchor",null,null,!0),n.formatter.apply("namedAnchor",{value:o}),n.addVisual())})),e.focus()},l=function(o){var e,t=(e=u(o))?n(e):"";o.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:function(e){var t,n;t=o,n=e.getData().id,(/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(n)?(i(t,n),1):(t.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),0))&&e.close()}})},d=function(r){return function(e){for(var t,n,o=0;o<e.length;o++){var a=e[o];n=void 0,!(n=t=a)||n.attr("href")||!n.attr("id")&&!n.attr("name")||t.firstChild||a.attr("contenteditable",r)}}};e.add("anchor",function(e){var t,n,o;(t=e).on("PreInit",function(){t.parser.addNodeFilter("a",d("false")),t.serializer.addNodeFilter("a",d(null))}),(n=e).addCommand("mceAnchor",function(){l(n)}),(o=e).ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:function(){return o.execCommand("mceAnchor")},onSetup:function(e){return o.selection.selectorChangedWithUnbind("a:not([href])",e.setActive).unbind}}),o.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:function(){return o.execCommand("mceAnchor")}}),e.on("PreInit",function(){e.formatter.register("namedAnchor",{inline:"a",selector:a,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:function(e,t,n){return r(e)}})})})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/autolink/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),i=function(e,t){var n;return t<0&&(t=0),3!==e.nodeType||(n=e.data.length)<t&&(t=n),t},y=function(e,t,n){1!==t.nodeType||t.hasChildNodes()?e.setStart(t,i(t,n)):e.setStartBefore(t)},k=function(e,t,n){1!==t.nodeType||t.hasChildNodes()?e.setEnd(t,i(t,n)):e.setEndAfter(t)},r=function(e,t,n){var o,i,r,a,s,d,f,l=e.getParam("autolink_pattern",/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@(?!.*@))(.+)$/i),c=e.getParam("default_link_target",!1);if("A"!==e.selection.getNode().tagName){var g=e.selection.getRng().cloneRange();if(g.startOffset<5){if(!(s=g.endContainer.previousSibling)){if(!g.endContainer.firstChild||!g.endContainer.firstChild.nextSibling)return;s=g.endContainer.firstChild.nextSibling}if(d=s.length,y(g,s,d),k(g,s,d),g.endOffset<5)return;o=g.endOffset,i=s}else{if(3!==(i=g.endContainer).nodeType&&i.firstChild){for(;3!==i.nodeType&&i.firstChild;)i=i.firstChild;3===i.nodeType&&(y(g,i,0),k(g,i,i.nodeValue.length))}o=1===g.endOffset?2:g.endOffset-1-t}for(var u,h=o;y(g,i,2<=o?o-2:0),k(g,i,1<=o?o-1:0),--o," "!==(f=g.toString())&&""!==f&&160!==f.charCodeAt(0)&&0<=o-2&&f!==n;);(u=g.toString())===n||" "===u||160===u.charCodeAt(0)?(y(g,i,o),k(g,i,h),o+=1):(0===g.startOffset?y(g,i,0):y(g,i,o),k(g,i,h)),"."===(a=g.toString()).charAt(a.length-1)&&k(g,i,h-1);var m=(a=g.toString().trim()).match(l),C=e.getParam("link_default_protocol","http","string");m&&("www."===m[1]?m[1]=C+"://www.":/@$/.test(m[1])&&!/^mailto:/.test(m[1])&&(m[1]="mailto:"+m[1]),r=e.selection.getBookmark(),e.selection.setRng(g),e.execCommand("createlink",!1,m[1]+m[2]),!1!==c&&e.dom.setAttrib(e.selection.getNode(),"target",c),e.selection.moveToBookmark(r),e.nodeChanged())}},t=function(t){var n;t.on("keydown",function(e){13!==e.keyCode||r(t,-1,"")}),o.browser.isIE()?t.on("focus",function(){if(!n){n=!0;try{t.execCommand("AutoUrlDetect",!1,!0)}catch(e){}}}):(t.on("keypress",function(e){41!==e.keyCode||r(t,-1,"(")}),t.on("keyup",function(e){32!==e.keyCode||r(t,0,"")}))};e.add("autolink",function(e){t(e)})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/autoresize/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),h=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),y=function(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")},a=function(e,t,n,i,o){r.setEditorTimeout(e,function(){b(e,t),n--?a(e,t,n,i,o):o&&o()},i)},p=function(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))},v=function(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o},b=function(e,t){var n,i,o,r,s,a,g,u,l,c,m,f=e.dom,d=e.getDoc();d&&((n=e).plugins.fullscreen&&n.plugins.fullscreen.isFullscreen()?p(e,!0):(i=d.documentElement,o=e.getParam("autoresize_bottom_margin",50,"number"),r=y(e),s=v(f,i,"margin-top",!0),a=v(f,i,"margin-bottom",!0),(g=i.offsetHeight+s+a+o)<0&&(g=0),g+(u=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight)>y(e)&&(r=g+u),(l=e.getParam("max_height",0,"number"))&&l<r?(r=l,p(e,!0)):p(e,!1),r!==t.get()&&(c=r-t.get(),f.setStyle(e.getContainer(),"height",r+"px"),t.set(r),e.fire("ResizeEditor"),h.browser.isSafari()&&h.mac&&(m=e.getWin()).scrollTo(m.pageXOffset,m.pageYOffset),e.hasFocus()&&e.selection.scrollIntoView(e.selection.getNode()),h.webkit&&c<0&&b(e,t))))};e.add("autoresize",function(e){var t,n,i,o,r,s;e.settings.hasOwnProperty("resize")||(e.settings.resize=!1),e.inline||(s=0,r=t={get:function(){return s},set:function(e){s=e}},(o=e).addCommand("mceAutoResize",function(){b(o,r)}),i=t,(n=e).on("init",function(){var e=n.getParam("autoresize_overflow_padding",1,"number"),t=n.dom;t.setStyles(n.getDoc().documentElement,{height:"auto"}),t.setStyles(n.getBody(),{paddingLeft:e,paddingRight:e,"min-height":0})}),n.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",function(){b(n,i)}),n.getParam("autoresize_on_init",!0,"boolean")&&n.on("init",function(){a(n,i,20,100,function(){a(n,i,5,1e3)})}))})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/autosave/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var e,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=(e=undefined,function(t){return e===t}),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),n=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),o=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(t,e){var r=t||e,n=/^(\d+)([ms]?)$/.exec(""+r);return(n[2]?{s:1e3,m:6e4}[n[2]]:1)*parseInt(r,10)},u=function(t){var e=document.location;return t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-").replace(/{path}/g,e.pathname).replace(/{query}/g,e.search).replace(/{hash}/g,e.hash).replace(/{id}/g,t.id)},s=function(t,e){if(a(e))return t.dom.isEmpty(t.getBody());var r=o.trim(e);if(""===r)return!0;var n=(new DOMParser).parseFromString(r,"text/html");return t.dom.isEmpty(n)},f=function(t){var e=parseInt(n.getItem(u(t)+"time"),10)||0;return!((new Date).getTime()-e>i(t.getParam("autosave_retention"),"20m"))||(c(t,!1),!1)},c=function(t,e){var r=u(t);n.removeItem(r+"draft"),n.removeItem(r+"time"),!1!==e&&t.fire("RemoveDraft")},m=function(t){var e=u(t);!s(t)&&t.isDirty()&&(n.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),n.setItem(e+"time",(new Date).getTime().toString()),t.fire("StoreDraft"))},l=function(t){var e=u(t);f(t)&&(t.setContent(n.getItem(e+"draft"),{format:"raw"}),t.fire("RestoreDraft"))},v=function(t){var e=i(t.getParam("autosave_interval"),"30s");r.setEditorInterval(t,function(){m(t)},e)},d=function(t){t.undoManager.transact(function(){l(t),c(t)}),t.focus()},g=tinymce.util.Tools.resolve("tinymce.EditorManager"),y=function(r){return function(t){t.setDisabled(!f(r));var e=function(){return t.setDisabled(!f(r))};return r.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return r.off("StoreDraft RestoreDraft RemoveDraft",e)}}};t.add("autosave",function(t){var e,r;return t.editorManager.on("BeforeUnload",function(t){var e;o.each(g.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)}),v(e=t),e.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){d(e)},onSetup:y(e)}),e.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){d(e)},onSetup:y(e)}),t.on("init",function(){t.getParam("autosave_restore_when_empty",!1)&&t.dom.isEmpty(t.getBody())&&l(t)}),r=t,{hasDraft:function(){return f(r)},storeDraft:function(){return m(r)},restoreDraft:function(){return l(r)},removeDraft:function(t){return c(r,t)},isEmpty:function(t){return s(r,t)}}})}();
|
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(t){t=e.trim(t);var o=function(o,e){t=t.replace(o,e)};return o(/\n/gi,"<br />"),o(/\[b\]/gi,"<strong>"),o(/\[\/b\]/gi,"</strong>"),o(/\[i\]/gi,"<em>"),o(/\[\/i\]/gi,"</em>"),o(/\[u\]/gi,"<u>"),o(/\[\/u\]/gi,"</u>"),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),o(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),o(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),o(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span> '),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span> '),t};o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=t(o.content)}),o.on("PostProcess",function(o){o.set&&(o.content=t(o.content)),o.get&&(o.content=function(t){t=e.trim(t);var o=function(o,e){t=t.replace(o,e)};return o(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/<font>(.*?)<\/font>/gi,"$1"),o(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),o(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),o(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),o(/<u>/gi,"[u]"),o(/<blockquote[^>]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/<br \/>/gi,"\n"),o(/<br\/>/gi,"\n"),o(/<br>/gi,"\n"),o(/<p>/gi,""),o(/<\/p>/gi,"\n"),o(/ |\u00a0/gi," "),o(/"/gi,'"'),o(/</gi,"<"),o(/>/gi,">"),o(/&/gi,"&"),t}(o.content))})})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/charmap/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(o){var e=o.getContent({source_view:!0});o.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){var t,n;t=o,n=e.getData().code,t.focus(),t.undoManager.transact(function(){t.setContent(n)}),t.selection.setCursorLocation(),t.nodeChanged(),e.close()}})};e.add("code",function(e){var t,n;return(t=e).addCommand("mceCodeEditor",function(){o(t)}),(n=e).ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:function(){return o(n)}}),n.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:function(){return o(n)}}),{}})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/codesample/plugin.min.js
vendored
Normal file
9
samples/react-questions-and-answers/src/tinymce/plugins/colorpicker/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("colorpicker",function(){console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/contextmenu/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("contextmenu",function(){console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/directionality/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var n,t,e,o,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(n,t){var e,o=n.dom,r=n.selection.getSelectedBlocks();r.length&&(e=o.getAttrib(r[0],"dir"),u.each(r,function(n){o.getParent(n.parentNode,'*[dir="'+t+'"]',o.getRoot())||o.setAttrib(n,"dir",e!==t?t:null)}),n.nodeChanged())},c=function(n){return function(){return n}},f=c(!1),d=c(!0),l=function(){return m},m=(n=function(n){return n.isNone()},{fold:function(n,t){return n()},is:f,isSome:f,isNone:d,getOr:e=function(n){return n},getOrThunk:t=function(n){return n()},getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:c(null),getOrUndefined:c(undefined),or:e,orThunk:t,map:l,each:function(){},bind:l,exists:f,forall:d,filter:l,equals:n,equals_:n,toArray:function(){return[]},toString:c("none()")}),a=function(e){var n=c(e),t=function(){return r},o=function(n){return n(e)},r={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:d,isNone:f,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:t,orThunk:t,map:function(n){return a(n(e))},each:function(n){n(e)},bind:o,exists:o,forall:o,filter:function(n){return n(e)?r:m},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return r},s={some:a,none:l,from:function(n){return null===n||n===undefined?m:a(n)}},g=function(n){return!(null===(t=n)||t===undefined);var t},h=(o="function",function(n){return typeof n===o}),v=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:n}},y={fromHtml:function(n,t){var e=(t||document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return v(e.childNodes[0])},fromTag:function(n,t){var e=(t||document).createElement(n);return v(e)},fromText:function(n,t){var e=(t||document).createTextNode(n);return v(e)},fromDom:v,fromPoint:function(n,t,e){return s.from(n.dom.elementFromPoint(t,e)).map(v)}},p=("undefined"!=typeof window||Function("return this;")(),function(t){return function(n){return n.dom.nodeType===t}}),T=p(3),N=p(9),D=p(11),w=h(Element.prototype.attachShadow)&&h(Node.prototype.getRootNode)?function(n){return y.fromDom(n.dom.getRootNode())}:function(n){return N(n)?n:(t=n,y.fromDom(t.dom.ownerDocument));var t},O=function(n){var t,e=w(n);return D(t=e)&&g(t.dom.host)?s.some(e):s.none()},C=function(n){return y.fromDom(n.dom.host)},S=function(n){var t=T(n)?n.dom.parentNode:n.dom;if(t===undefined||null===t||null===t.ownerDocument)return!1;var e,o,r=t.ownerDocument;return O(y.fromDom(t)).fold(function(){return r.body.contains(t)},(e=S,o=C,function(n){return e(o(n))}))},L=function(n,t){return(e=n).style!==undefined&&h(e.style.getPropertyValue)?n.style.getPropertyValue(t):"";var e},R=function(n){return"rtl"===(e="direction",o=(t=n).dom,""!==(r=window.getComputedStyle(o).getPropertyValue(e))||S(t)?r:L(o,e))?"rtl":"ltr";var t,e,o,r},A=function(t,o){return function(e){var n=function(n){var t=y.fromDom(n.element);e.setActive(R(t)===o)};return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}};r.add("directionality",function(n){var t,e;(t=n).addCommand("mceDirectionLTR",function(){i(t,"ltr")}),t.addCommand("mceDirectionRTL",function(){i(t,"rtl")}),(e=n).ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:function(){return e.execCommand("mceDirectionLTR")},onSetup:A(e,"ltr")}),e.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:function(){return e.execCommand("mceDirectionRTL")},onSetup:A(e,"rtl")})})}();
|
9424
samples/react-questions-and-answers/src/tinymce/plugins/emoticons/js/emojiimages.js
vendored
Normal file
3
samples/react-questions-and-answers/src/tinymce/plugins/emoticons/js/emojiimages.min.js
vendored
Normal file
9423
samples/react-questions-and-answers/src/tinymce/plugins/emoticons/js/emojis.js
vendored
Normal file
2
samples/react-questions-and-answers/src/tinymce/plugins/emoticons/js/emojis.min.js
vendored
Normal file
9
samples/react-questions-and-answers/src/tinymce/plugins/emoticons/plugin.min.js
vendored
Normal file
9
samples/react-questions-and-answers/src/tinymce/plugins/fullpage/plugin.min.js
vendored
Normal file
9
samples/react-questions-and-answers/src/tinymce/plugins/fullscreen/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager");n.add("hr",function(n){var o,t;(o=n).addCommand("InsertHorizontalRule",function(){o.execCommand("mceInsertContent",!1,"<hr />")}),(t=n).ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:function(){return t.execCommand("InsertHorizontalRule")}}),t.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:function(){return t.execCommand("InsertHorizontalRule")}})})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/imagetools/plugin.min.js
vendored
Normal file
9
samples/react-questions-and-answers/src/tinymce/plugins/importcss/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var n,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),f=tinymce.util.Tools.resolve("tinymce.EditorManager"),m=tinymce.util.Tools.resolve("tinymce.Env"),h=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(t){return t.getParam("importcss_selector_converter")},o=(n="array",function(t){return r=typeof(e=t),(null===e?"null":"object"==r&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":r)===n;var e,r}),i=Array.prototype.push,l=function(t,e){return function(t){for(var e=[],r=0,n=t.length;r<n;++r){if(!o(t[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+t);i.apply(e,t[r])}return e}(function(t,e){for(var r=t.length,n=new Array(r),o=0;o<r;o++){var i=t[o];n[o]=e(i,o)}return n}(t,e))},p=function(e){return"string"==typeof e?function(t){return-1!==t.indexOf(e)}:e instanceof RegExp?function(t){return e.test(t)}:e},_=function(s,t,a){var u=[],r={},l=function(t,e){var r,n,o,i=t.href;if(n=i,o=m.cacheSuffix,"string"==typeof n&&(n=n.replace("?"+o,"").replace("&"+o,"")),(i=n)&&a(i,e)&&!function(t,e){var r,n=!1!==(r=t.getParam("skin"))&&(r||"oxide");if(n){var o=t.getParam("skin_url"),i=o?t.documentBaseURI.toAbsolute(o):f.baseURL+"/skins/ui/"+n,c=f.baseURL+"/skins/content/";return e===i+"/content"+(t.inline?".inline":"")+".min.css"||-1!==e.indexOf(c)}return!1}(s,i)){h.each(t.imports,function(t){l(t,!0)});try{r=t.cssRules||t.rules}catch(c){}h.each(r,function(t){t.styleSheet?l(t.styleSheet,!0):t.selectorText&&h.each(t.selectorText.split(","),function(t){u.push(h.trim(t))})})}};h.each(s.contentCSS,function(t){r[t]=!0}),a=a||function(t,e){return e||r[t]};try{h.each(t.styleSheets,function(t){l(t)})}catch(e){}return u},x=function(t,e){var r,n=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(e);if(n){var o=n[1],i=n[2].substr(1).split(".").join(" "),c=h.makeMap("a,img");return n[1]?(r={title:e},t.schema.getTextBlockElements()[o]?r.block=o:t.schema.getBlockElements()[o]||c[o.toLowerCase()]?r.selector=o:r.inline=o):n[2]&&(r={inline:"span",title:e.substr(1),classes:i}),!1!==t.getParam("importcss_merge_classes")?r.classes=i:r.attributes={"class":i},r}},P=function(t,e){return null===e||!1!==t.getParam("importcss_exclusive")},r=function(y){y.on("init",function(t){var e,r,n,o,i=(e=[],r=[],n={},{addItemToGroup:function(t,e){n[t]?n[t].push(e):(r.push(t),n[t]=[e])},addItem:function(t){e.push(t)},toFormats:function(){return l(r,function(t){var e=n[t];return 0===e.length?[]:[{title:t,items:e}]}).concat(e)}}),g={},c=p(y.getParam("importcss_selector_filter")),s=(o=y.getParam("importcss_groups"),h.map(o,function(t){return h.extend({},t,{original:t,selectors:{},filter:p(t.filter),item:{text:t.title,menu:[]}})})),a=function(t,e){if(f=t,p=g,!(P(y,m=e)?f in p:f in m.selectors)){a=t,l=g,P(y,u=e)?l[a]=!0:u.selectors[a]=!0;var r=(i=(o=y).plugins.importcss,c=t,((s=e)&&s.selector_converter?s.selector_converter:d(o)?d(o):function(){return x(o,c)}).call(i,c,s));if(r){var n=r.name||v.DOM.uniqueId();return y.formatter.register(n,r),h.extend({},{title:r.title,format:n})}}var o,i,c,s,a,u,l,f,m,p;return null};h.each(_(y,y.getDoc(),p(y.getParam("importcss_file_filter"))),function(r){var t,e,n,o;-1===r.indexOf(".mce-")&&(c&&!c(r)||(n=s,o=r,0<(t=h.grep(n,function(t){return!t.filter||t.filter(o)})).length?h.each(t,function(t){var e=a(r,t);e&&i.addItemToGroup(t.title,e)}):(e=a(r,null))&&i.addItem(e)))});var u=i.toFormats();y.fire("addStyleModifications",{items:u,replace:!y.getParam("importcss_append")})})};t.add("importcss",function(t){return r(t),e=t,{convertSelectorToFormat:function(t){return x(e,t)}};var e})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/insertdatetime/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))},c=function(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])},r="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),a="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),i="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),o="January February March April May June July August September October November December".split(" "),m=function(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e},s=function(e,t,n){return n=n||new Date,t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",m(n.getMonth()+1,2))).replace("%d",m(n.getDate(),2))).replace("%H",""+m(n.getHours(),2))).replace("%M",""+m(n.getMinutes(),2))).replace("%S",""+m(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(o[n.getMonth()]))).replace("%b",""+e.translate(i[n.getMonth()]))).replace("%A",""+e.translate(a[n.getDay()]))).replace("%a",""+e.translate(r[n.getDay()]))).replace("%%","%")},l=function(e,t){var n,r,a,i,o,u,c,m;e.getParam("insertdatetime_element",!1)?(n=s(e,t),r=void 0,r=/%[HMSIp]/.test(t)?s(e,"%Y-%m-%dT%H:%M"):s(e,"%Y-%m-%d"),(a=e.dom.getParent(e.selection.getStart(),"time"))?(o=a,u=r,c=n,m=(i=e).dom.create("time",{datetime:u},c),o.parentNode.insertBefore(m,o),i.dom.remove(o),i.selection.select(m,!0),i.selection.collapse(!1)):e.insertContent('<time datetime="'+r+'">'+n+"</time>")):e.insertContent(s(e,t))},t=function(t){t.addCommand("mceInsertDate",function(){var e;l(t,(e=t).getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d")))}),t.addCommand("mceInsertTime",function(){l(t,u(t))})},d=tinymce.util.Tools.resolve("tinymce.util.Tools"),n=function(n){var e,t,r,a,i=c(n),o=(a=c(r=n),e=0<a.length?a[0]:u(r),t=e,{get:function(){return t},set:function(e){t=e}});n.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:function(e){return e===o.get()},fetch:function(e){e(d.map(i,function(e){return{type:"choiceitem",text:s(n,e),value:e}}))},onAction:function(e){l(n,o.get())},onItemAction:function(e,t){o.set(t),l(n,t)}});n.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:function(){return d.map(i,function(e){return{type:"menuitem",text:s(n,e),onAction:(t=e,function(){o.set(t),l(n,t)})};var t})}})};e.add("insertdatetime",function(e){t(e),n(e)})}();
|
9
samples/react-questions-and-answers/src/tinymce/plugins/legacyoutput/plugin.min.js
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.1 (2021-03-17)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(s){var e,t,i,a;t=!1,(e=s).settings.inline_styles=t,e.getParam("fontsize_formats")||(i="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7",e.settings.fontsize_formats=i),e.getParam("font_formats")||(a="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",e.settings.font_formats=a),s.on("PreInit",function(){return e=s,t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=l.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")),a=e.schema,e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all",preserve_attributes:["class","style"]},{inline:"strong",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all",preserve_attributes:["class","style"]},{inline:"em",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return String(l.inArray(i,e.value)+1)}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),l.each("b,i,u,strike".split(","),function(e){a.addValidElements(e+"[*]")}),a.getElementRule("font")||a.addValidElements("font[face|size|color|style]"),void l.each(t.split(","),function(e){var t=a.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))});var e,t,i,a})};e.add("legacyoutput",function(e){t(e)})}();
|