Guest User

Untitled

a guest
Jan 17th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.08 KB | None | 0 0
  1. <div>
  2. <apex:outputPanel id="markUp" layout="block">
  3. <div>
  4. <div class="slds-form-element slds-m-around_small slds-p-right_medium slds-p-left_medium slds-p-bottom_medium">
  5. <p class="slds-float_left">Target Field</p>
  6. <div class="slds-form-element__control">
  7. <div class="slds-select_container">
  8. <select class="slds-select" style="font-size:1.2rem" value="" id="options" >
  9. <option selected="selected" id=""></option>
  10. <apex:repeat value="{!strings}" var="type">
  11. <option id="{!type.api}"><span style="font-size: 270%;">{!type.label}</span></option>
  12. </apex:repeat>
  13. </select>
  14. </div>
  15. </div>
  16. </div>
  17. <div class="slds-form-element slds-m-around_small slds-p-right_medium slds-p-left_medium slds-p-bottom_medium">
  18. <p class="slds-float_left">Select File</p>
  19. <div class="slds-select_container" >
  20. <select class="slds-select" value="{!selectedFile}" id = "optionsFile" onchange="myCanvas.selectFile($('#optionsFile option:selected').attr('id'), event);">
  21. <option selected="selected" id=""></option>
  22. <apex:repeat value="{!files}" var="type">
  23. <option id="{!type.Id}"><span style="font-size: 250%;">{!type.Title}</span></option>
  24. </apex:repeat>
  25. </select>
  26. </div>
  27. </div>
  28. <div class="slds-form-element slds-m-around_small slds-p-right_medium slds-p-left_medium slds-p-bottom_medium">
  29. <p class="slds-float_left">Description</p>
  30. <div class="slds-form-element__control">
  31. <textarea rows="3" style="font-size:1.5rem" id="desc" class="slds-input" placeholder=""/>
  32. </div>
  33. </div>
  34. </div>
  35. <div class="demo" id="colors_demo">
  36. <div id="canvas-container">
  37. <div class="slds-grid" style="margin-bottom:15px" >
  38. <div class="slds-col">
  39. <span class="btn-file" title="Upload/Take Photo">
  40. <img src="/resource/drawingIcons/tab-camera.svg" width="35"/>
  41. <input type="file" id="input" />
  42. </span>
  43. </div>
  44. <div class="slds-col" title="Rotate Clockwise">
  45. <a role="button" onclick="myCanvas.rotateClockwise();">
  46. <img src="/resource/drawingIcons/tab-rotate.svg" width="35"/>
  47. </a>
  48. </div>
  49. <div class="slds-col" title="Undo">
  50. <a role="button" onclick="myCanvas.undo();">
  51. <svg aria-hidden="true" class="slds-icon slds-icon_container_circle slds-icon--large slds-utility-action-undo" style="height: 3.5rem;background: blue;">
  52. <use xlink:href="{!URLFOR($Asset.SLDS, 'assets/icons/utility-sprite/svg/symbols.svg#undo')}"></use>
  53. </svg>
  54. </a>
  55. </div>
  56. <div class="slds-col" title="Pencil">
  57. <a role="button" data-toggle="collapse" href="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
  58. <img src="/resource/drawingIcons/tab-draw.svg" width="35"/>
  59. </a>
  60. </div>
  61. <div class="slds-col" title="Reset">
  62. <a role="button" onclick="myCanvas.discard();">
  63. <img src="/resource/drawingIcons/tab-delete.svg" width="35"/>
  64. </a>
  65. </div>
  66. <div class="slds-col" title="Submit Changes">
  67. <a role="button" onclick="setImageString('tools_sketch');">
  68. <img src="/resource/drawingIcons/tick.svg" width="36"/>
  69. </a>
  70. </div>
  71. </div>
  72.  
  73. <div class="collapse" id="collapseExample">
  74. <div class="row" style="background: #F0F1F2; border:0px; margin-top:40px; ">
  75. <div class="col-xs-2 col-xs-offset-1">
  76. <div class="size " onclick="myCanvas.changeSize(2);" style="height:4px;width:4px;border-radius:2px;"/></div>
  77. <div class="col-xs-2">
  78. <div class="size" onclick="myCanvas.changeSize(4);" style="height:8px;width:8px;border-radius:4px;"/>
  79. </div>
  80. <div class="col-xs-2">
  81. <div class="size" onclick="myCanvas.changeSize(8);" style="height:14px;width:14px;border-radius:7px;"/>
  82. </div>
  83. <div class="col-xs-2">
  84. <div class="size" onclick="myCanvas.changeSize(16);" style="height:20px;width:20px;border-radius:10px;"/>
  85. </div>
  86. <div class="col-xs-2">
  87. <div class="size" onclick="myCanvas.changeSize(32);" style="height:32px;width:32px;border-radius:16px;"/>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. <div id="color_box">
  93. <div class="single-color"></div>
  94. <div class="colors"></div>
  95. </div>
  96. <div class="slds-m-vertical_medium">
  97. <canvas id="tools_sketch" width="400" height="400"></canvas>
  98. <!--<canvas id="tools_sketch"></canvas>-->
  99. </div>
  100. </div>
  101. <div class="slds-scope" id="cont">
  102. <div style="margin-top: 16rem;">
  103. <p style="font-size: large;color: white;">Do you want to take/upload another photo?</p>
  104. <button class="slds-button slds-button_brand button" style="font-size: 2rem;" onclick="discard()">Yes</button>
  105. <button class="slds-button slds-button_brand button" style="font-size: 2rem;" onclick="refreshFeed()">No</button>
  106. </div>
  107. </div>
  108. </apex:outputPanel>
  109. </div>
  110. <script type="text/javascript">
  111. Sfdc.canvas.publisher.subscribe({name: "publisher.showPanel",
  112. onData:function(e) {
  113. Sfdc.canvas.publisher.publish({name:"publisher.setValidForSubmit", payload:"true"});
  114. }});
  115. Sfdc.canvas.publisher.subscribe({ name: "publisher.post",
  116. onData: function(e) {
  117. setImageString('tools_sketch');
  118. }});
  119. function setImageString(canvasId){
  120. var dataURL = document.getElementById(canvasId).toDataURL();
  121. var base64String = dataURL.replace('data:image/png;base64,', '');
  122. show('loading', true);
  123. Visualforce.remoting.timeout = 120000;
  124. Visualforce.remoting.Manager.invokeAction(
  125. '{!$RemoteAction.AnnotatePhotoController.PostToChatterRemote}',
  126. base64String,'{!myId}', document.getElementById("desc").value, $('#options option:selected').attr('id'),
  127. function(result, event){
  128. show('loading', false);
  129. $("#cont").show();
  130. document.getElementById("desc").value = '';
  131. $("html, body").animate({
  132. scrollTop: 0
  133. }, 600);
  134. },
  135. {escape: true});
  136. }
  137.  
  138. var myCanvas = false;
  139. var locationOld = window.location.href;
  140. $(function() {
  141. myCanvas = new Canvas('tools_sketch');
  142. myCanvas.setImgInput('input');
  143. myCanvas.selectFile('optionsFile');
  144.  
  145. var theCanvas = document.getElementById('tools_sketch');
  146. //theCanvas.width = window.innerWidth * 0.7;
  147. //theCanvas.height = window.innerHeight * 0.5;
  148.  
  149. $.each(['#e74c3c', '#c0392b', '#2ecc71', '#1abc9c', '#3498db', '#9b59b6', '#f1c40f', '#f39c12'], function() {
  150. $('#colors_demo .colors').append(
  151. "<div class='colour' style='background-color: " + this + ";' onclick="changeCanvasColour('" + this + "')"></div>");
  152. });
  153. $.each(['#ecf0f1', '#bdc3c7', '#7f8c8d', '#34495e', '#000000', '#ffffff'], function() {
  154. $('#colors_demo .single-color').append(
  155. "<div class='colour' style='background-color: " + this + ";' onclick="changeCanvasColour('" + this + "')"></div>");
  156. });
  157.  
  158. $(".colour").click(function() {
  159. $(".colour").removeClass().addClass('colour');
  160. $(this).addClass('colour-active');
  161. var currentColour = $(this).css("background-color");
  162. $(".size").each(function() {
  163. $(this).css("background-color", currentColour);
  164. });
  165. });
  166.  
  167. $(".size").click(function() {
  168. $(".size").removeClass().addClass('size');
  169. $(this).addClass('size-active');
  170. });
  171.  
  172. $("option[id='{!MarkupSelectedField}']").attr('selected','selected');
  173. });
  174.  
  175. function show(id, value) {
  176. document.getElementById(id).style.display = value ? 'block' : 'none';
  177. }
  178. function changeCanvasColour(colour) {
  179. myCanvas.changeColour(colour);
  180. }
  181. function discard(){
  182. document.getElementById('cont').style.display = 'none';
  183. myCanvas.discard();
  184. }
  185. function refreshFeed() {
  186. Sfdc.canvas.publisher.publish({name : 'publisher.refresh', payload : {feed: true}});
  187. Sfdc.canvas.publisher.publish({name : 'publisher.close', payload:{refresh:"true"}});
  188. }
  189. function launchFlow(){
  190. window.location.href = '/flow/Sample_Flow';
  191. }
  192. </script>
  193. </body>
  194. </html>
  195.  
  196. global class AnnotatePhotoController {
  197. public Id myId {get;set;}
  198. public String selectedType{get;set;}
  199. public String selectedFile{get;set;}
  200. public List<ContentVersion> versionFiles{get;set;}
  201. public Flow.Interview.Sample_Flow myFlow {get; set;}
  202.  
  203. public class FieldSetsWrapper{
  204. public String label {get;set;}
  205. public String api {get;set;}
  206. }
  207.  
  208. public AnnotatePhotoController()
  209. {
  210. myId = ApexPages.currentPage().getParameters().get('id'); // get current record ID
  211. if (myId == null) {
  212. myId = UserInfo.getUserId(); // set this to be current user ID if no record is associated
  213. }
  214. }
  215.  
  216. @RemoteAction
  217. global static String PostToChatterRemote(String fileContent, Id objId, String description, String field) {
  218. String errorMsg = null;
  219. try {
  220. ContentVersion cont = new ContentVersion();
  221. cont.Title = string.isBlank(description) ? string.valueOf(datetime.now()) : description;
  222. cont.VersionData = EncodingUtil.base64Decode(fileContent);
  223. cont.PathOnClient = '/' + string.valueOf(datetime.now()) + '.png';
  224. cont.Description = description;
  225. insert cont;
  226.  
  227. ContentVersion cVer = [Select ContentDocumentId, Id, Description From ContentVersion Where Id =: cont.Id];
  228. ContentDocumentLink docuLink = new ContentDocumentLink();
  229. docuLink.LinkedEntityId = objId;
  230. doculink.ContentDocumentId = cVer.ContentDocumentId;
  231. doculink.ShareType = 'V';
  232. insert docuLink;
  233.  
  234. String queryStr = 'Select ' + field + ' From ' + objId.getSobjectType() + ' Where Id = ' + ''' + objId + ''';
  235. Sobject obj = database.query(queryStr);
  236.  
  237. String oldVal = String.valueOf(obj.get(field)) <> null ? (String)obj.get(field) : '';
  238. String newVal = oldVal + '<p>'+ description + '</p>' + '<p><img src="/sfc/servlet.shepherd/version/download/' + cont.Id + '"></img></p>';
  239. obj.put(field, newVal);
  240. update obj;
  241.  
  242. } catch(Exception e) {
  243. errorMsg = e.getMessage();
  244. System.debug(e.getMessage());
  245. }
  246. return errorMsg;
  247. }
  248.  
  249. public List<FieldSetsWrapper> getStrings() {
  250. String objName = myId.getSObjectType().getDescribe().getName();
  251. SObjectType objToken = Schema.getGlobalDescribe().get(objName);
  252. DescribeSObjectResult objDef = objToken.getDescribe();
  253. Map<String, Schema.FieldSet> fields = objDef.FieldSets.getMap();
  254. List<FieldSetsWrapper> targetFieldList = new List<FieldSetsWrapper>();
  255.  
  256. for(Schema.FieldSetMember fsMemberOpp: fields.get('markup_target_fields').getFields()){
  257. FieldSetsWrapper fieldsWrap = new FieldSetsWrapper();
  258. fieldsWrap.label = fsMemberOpp.getLabel();
  259. fieldsWrap.api = fsMemberOpp.getFieldPath();
  260.  
  261. targetFieldList.add(fieldsWrap);
  262. }
  263.  
  264. return targetFieldList;
  265. }
  266.  
  267. public List<ContentVersion> getFiles() {
  268. Set<String> plValues = new Set<String>();
  269. Set<Id> docIds = new Set<Id>();
  270. selectedFile = '';
  271.  
  272. for(ContentDocumentLink cd: [Select ContentDocumentId From ContentDocumentLink Where LinkedEntityId=: myId]) {
  273. docIds.add(cd.ContentDocumentId);
  274. }
  275.  
  276. versionFiles = [Select Id, Title From ContentVersion Where ContentDocumentId IN: docIds];
  277. return versionFiles;
  278. }
  279.  
  280. public String getMarkupSelectedField() {
  281. String markupSelectedField = '';
  282. if (myFlow!=null) {
  283. markupSelectedField = (String) myFlow.getVariableValue('MarkupSelectedField');
  284. }
  285.  
  286. return markupSelectedField;
  287. }
  288.  
  289. public Id getMarkupRecordId() {
  290. Id markupRecordId;
  291. if (myFlow==null) {
  292. return ApexPages.currentPage().getParameters().get('id');
  293. }else {
  294. markupRecordId = (Id) myFlow.getVariableValue('MarkupRecordId');
  295. }
  296.  
  297. return markupRecordId;
  298. }
  299.  
  300. public String getPausedId() {
  301. String currentUser = UserInfo.getUserId();
  302. String interviewLabel = 'Product_Inspection' + myId;
  303. List<FlowInterview> interviews =
  304. [SELECT Id FROM FlowInterview WHERE CreatedById = :currentUser AND InterviewLabel = :interviewLabel order by LastModifiedDate];
  305.  
  306. if (interviews == null || interviews.isEmpty()) {
  307. return null; // early out
  308. }
  309.  
  310. // Return the ID for the first interview in the list
  311. return interviews.get(0).Id;
  312. }
  313.  
  314. public Boolean getShowMarkUp() {
  315. Boolean showMarkUp=true;
  316. if (myFlow==null) {
  317. return false;
  318. } else {
  319. showMarkUp = (Boolean) myFlow.getVariableValue('ShowMarkUp');
  320. }
  321.  
  322. return (showMarkUp==null ? false: showMarkUp);
  323. }
  324.  
  325. public Boolean getShowFlow() {
  326. Boolean showFlow=true;
  327. if (myFlow==null) {
  328. return true;
  329. }else {
  330. showFlow = (Boolean) myFlow.getVariableValue('ShowFlow');
  331. }
  332.  
  333. return (showFlow==null ? false: showFlow);
  334. }
Add Comment
Please, Sign In to add comment