Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <div>
- <apex:outputPanel id="markUp" layout="block">
- <div>
- <div class="slds-form-element slds-m-around_small slds-p-right_medium slds-p-left_medium slds-p-bottom_medium">
- <p class="slds-float_left">Target Field</p>
- <div class="slds-form-element__control">
- <div class="slds-select_container">
- <select class="slds-select" style="font-size:1.2rem" value="" id="options" >
- <option selected="selected" id=""></option>
- <apex:repeat value="{!strings}" var="type">
- <option id="{!type.api}"><span style="font-size: 270%;">{!type.label}</span></option>
- </apex:repeat>
- </select>
- </div>
- </div>
- </div>
- <div class="slds-form-element slds-m-around_small slds-p-right_medium slds-p-left_medium slds-p-bottom_medium">
- <p class="slds-float_left">Select File</p>
- <div class="slds-select_container" >
- <select class="slds-select" value="{!selectedFile}" id = "optionsFile" onchange="myCanvas.selectFile($('#optionsFile option:selected').attr('id'), event);">
- <option selected="selected" id=""></option>
- <apex:repeat value="{!files}" var="type">
- <option id="{!type.Id}"><span style="font-size: 250%;">{!type.Title}</span></option>
- </apex:repeat>
- </select>
- </div>
- </div>
- <div class="slds-form-element slds-m-around_small slds-p-right_medium slds-p-left_medium slds-p-bottom_medium">
- <p class="slds-float_left">Description</p>
- <div class="slds-form-element__control">
- <textarea rows="3" style="font-size:1.5rem" id="desc" class="slds-input" placeholder=""/>
- </div>
- </div>
- </div>
- <div class="demo" id="colors_demo">
- <div id="canvas-container">
- <div class="slds-grid" style="margin-bottom:15px" >
- <div class="slds-col">
- <span class="btn-file" title="Upload/Take Photo">
- <img src="/resource/drawingIcons/tab-camera.svg" width="35"/>
- <input type="file" id="input" />
- </span>
- </div>
- <div class="slds-col" title="Rotate Clockwise">
- <a role="button" onclick="myCanvas.rotateClockwise();">
- <img src="/resource/drawingIcons/tab-rotate.svg" width="35"/>
- </a>
- </div>
- <div class="slds-col" title="Undo">
- <a role="button" onclick="myCanvas.undo();">
- <svg aria-hidden="true" class="slds-icon slds-icon_container_circle slds-icon--large slds-utility-action-undo" style="height: 3.5rem;background: blue;">
- <use xlink:href="{!URLFOR($Asset.SLDS, 'assets/icons/utility-sprite/svg/symbols.svg#undo')}"></use>
- </svg>
- </a>
- </div>
- <div class="slds-col" title="Pencil">
- <a role="button" data-toggle="collapse" href="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
- <img src="/resource/drawingIcons/tab-draw.svg" width="35"/>
- </a>
- </div>
- <div class="slds-col" title="Reset">
- <a role="button" onclick="myCanvas.discard();">
- <img src="/resource/drawingIcons/tab-delete.svg" width="35"/>
- </a>
- </div>
- <div class="slds-col" title="Submit Changes">
- <a role="button" onclick="setImageString('tools_sketch');">
- <img src="/resource/drawingIcons/tick.svg" width="36"/>
- </a>
- </div>
- </div>
- <div class="collapse" id="collapseExample">
- <div class="row" style="background: #F0F1F2; border:0px; margin-top:40px; ">
- <div class="col-xs-2 col-xs-offset-1">
- <div class="size " onclick="myCanvas.changeSize(2);" style="height:4px;width:4px;border-radius:2px;"/></div>
- <div class="col-xs-2">
- <div class="size" onclick="myCanvas.changeSize(4);" style="height:8px;width:8px;border-radius:4px;"/>
- </div>
- <div class="col-xs-2">
- <div class="size" onclick="myCanvas.changeSize(8);" style="height:14px;width:14px;border-radius:7px;"/>
- </div>
- <div class="col-xs-2">
- <div class="size" onclick="myCanvas.changeSize(16);" style="height:20px;width:20px;border-radius:10px;"/>
- </div>
- <div class="col-xs-2">
- <div class="size" onclick="myCanvas.changeSize(32);" style="height:32px;width:32px;border-radius:16px;"/>
- </div>
- </div>
- </div>
- </div>
- <div id="color_box">
- <div class="single-color"></div>
- <div class="colors"></div>
- </div>
- <div class="slds-m-vertical_medium">
- <canvas id="tools_sketch" width="400" height="400"></canvas>
- <!--<canvas id="tools_sketch"></canvas>-->
- </div>
- </div>
- <div class="slds-scope" id="cont">
- <div style="margin-top: 16rem;">
- <p style="font-size: large;color: white;">Do you want to take/upload another photo?</p>
- <button class="slds-button slds-button_brand button" style="font-size: 2rem;" onclick="discard()">Yes</button>
- <button class="slds-button slds-button_brand button" style="font-size: 2rem;" onclick="refreshFeed()">No</button>
- </div>
- </div>
- </apex:outputPanel>
- </div>
- <script type="text/javascript">
- Sfdc.canvas.publisher.subscribe({name: "publisher.showPanel",
- onData:function(e) {
- Sfdc.canvas.publisher.publish({name:"publisher.setValidForSubmit", payload:"true"});
- }});
- Sfdc.canvas.publisher.subscribe({ name: "publisher.post",
- onData: function(e) {
- setImageString('tools_sketch');
- }});
- function setImageString(canvasId){
- var dataURL = document.getElementById(canvasId).toDataURL();
- var base64String = dataURL.replace('data:image/png;base64,', '');
- show('loading', true);
- Visualforce.remoting.timeout = 120000;
- Visualforce.remoting.Manager.invokeAction(
- '{!$RemoteAction.AnnotatePhotoController.PostToChatterRemote}',
- base64String,'{!myId}', document.getElementById("desc").value, $('#options option:selected').attr('id'),
- function(result, event){
- show('loading', false);
- $("#cont").show();
- document.getElementById("desc").value = '';
- $("html, body").animate({
- scrollTop: 0
- }, 600);
- },
- {escape: true});
- }
- var myCanvas = false;
- var locationOld = window.location.href;
- $(function() {
- myCanvas = new Canvas('tools_sketch');
- myCanvas.setImgInput('input');
- myCanvas.selectFile('optionsFile');
- var theCanvas = document.getElementById('tools_sketch');
- //theCanvas.width = window.innerWidth * 0.7;
- //theCanvas.height = window.innerHeight * 0.5;
- $.each(['#e74c3c', '#c0392b', '#2ecc71', '#1abc9c', '#3498db', '#9b59b6', '#f1c40f', '#f39c12'], function() {
- $('#colors_demo .colors').append(
- "<div class='colour' style='background-color: " + this + ";' onclick="changeCanvasColour('" + this + "')"></div>");
- });
- $.each(['#ecf0f1', '#bdc3c7', '#7f8c8d', '#34495e', '#000000', '#ffffff'], function() {
- $('#colors_demo .single-color').append(
- "<div class='colour' style='background-color: " + this + ";' onclick="changeCanvasColour('" + this + "')"></div>");
- });
- $(".colour").click(function() {
- $(".colour").removeClass().addClass('colour');
- $(this).addClass('colour-active');
- var currentColour = $(this).css("background-color");
- $(".size").each(function() {
- $(this).css("background-color", currentColour);
- });
- });
- $(".size").click(function() {
- $(".size").removeClass().addClass('size');
- $(this).addClass('size-active');
- });
- $("option[id='{!MarkupSelectedField}']").attr('selected','selected');
- });
- function show(id, value) {
- document.getElementById(id).style.display = value ? 'block' : 'none';
- }
- function changeCanvasColour(colour) {
- myCanvas.changeColour(colour);
- }
- function discard(){
- document.getElementById('cont').style.display = 'none';
- myCanvas.discard();
- }
- function refreshFeed() {
- Sfdc.canvas.publisher.publish({name : 'publisher.refresh', payload : {feed: true}});
- Sfdc.canvas.publisher.publish({name : 'publisher.close', payload:{refresh:"true"}});
- }
- function launchFlow(){
- window.location.href = '/flow/Sample_Flow';
- }
- </script>
- </body>
- </html>
- global class AnnotatePhotoController {
- public Id myId {get;set;}
- public String selectedType{get;set;}
- public String selectedFile{get;set;}
- public List<ContentVersion> versionFiles{get;set;}
- public Flow.Interview.Sample_Flow myFlow {get; set;}
- public class FieldSetsWrapper{
- public String label {get;set;}
- public String api {get;set;}
- }
- public AnnotatePhotoController()
- {
- myId = ApexPages.currentPage().getParameters().get('id'); // get current record ID
- if (myId == null) {
- myId = UserInfo.getUserId(); // set this to be current user ID if no record is associated
- }
- }
- @RemoteAction
- global static String PostToChatterRemote(String fileContent, Id objId, String description, String field) {
- String errorMsg = null;
- try {
- ContentVersion cont = new ContentVersion();
- cont.Title = string.isBlank(description) ? string.valueOf(datetime.now()) : description;
- cont.VersionData = EncodingUtil.base64Decode(fileContent);
- cont.PathOnClient = '/' + string.valueOf(datetime.now()) + '.png';
- cont.Description = description;
- insert cont;
- ContentVersion cVer = [Select ContentDocumentId, Id, Description From ContentVersion Where Id =: cont.Id];
- ContentDocumentLink docuLink = new ContentDocumentLink();
- docuLink.LinkedEntityId = objId;
- doculink.ContentDocumentId = cVer.ContentDocumentId;
- doculink.ShareType = 'V';
- insert docuLink;
- String queryStr = 'Select ' + field + ' From ' + objId.getSobjectType() + ' Where Id = ' + ''' + objId + ''';
- Sobject obj = database.query(queryStr);
- String oldVal = String.valueOf(obj.get(field)) <> null ? (String)obj.get(field) : '';
- String newVal = oldVal + '<p>'+ description + '</p>' + '<p><img src="/sfc/servlet.shepherd/version/download/' + cont.Id + '"></img></p>';
- obj.put(field, newVal);
- update obj;
- } catch(Exception e) {
- errorMsg = e.getMessage();
- System.debug(e.getMessage());
- }
- return errorMsg;
- }
- public List<FieldSetsWrapper> getStrings() {
- String objName = myId.getSObjectType().getDescribe().getName();
- SObjectType objToken = Schema.getGlobalDescribe().get(objName);
- DescribeSObjectResult objDef = objToken.getDescribe();
- Map<String, Schema.FieldSet> fields = objDef.FieldSets.getMap();
- List<FieldSetsWrapper> targetFieldList = new List<FieldSetsWrapper>();
- for(Schema.FieldSetMember fsMemberOpp: fields.get('markup_target_fields').getFields()){
- FieldSetsWrapper fieldsWrap = new FieldSetsWrapper();
- fieldsWrap.label = fsMemberOpp.getLabel();
- fieldsWrap.api = fsMemberOpp.getFieldPath();
- targetFieldList.add(fieldsWrap);
- }
- return targetFieldList;
- }
- public List<ContentVersion> getFiles() {
- Set<String> plValues = new Set<String>();
- Set<Id> docIds = new Set<Id>();
- selectedFile = '';
- for(ContentDocumentLink cd: [Select ContentDocumentId From ContentDocumentLink Where LinkedEntityId=: myId]) {
- docIds.add(cd.ContentDocumentId);
- }
- versionFiles = [Select Id, Title From ContentVersion Where ContentDocumentId IN: docIds];
- return versionFiles;
- }
- public String getMarkupSelectedField() {
- String markupSelectedField = '';
- if (myFlow!=null) {
- markupSelectedField = (String) myFlow.getVariableValue('MarkupSelectedField');
- }
- return markupSelectedField;
- }
- public Id getMarkupRecordId() {
- Id markupRecordId;
- if (myFlow==null) {
- return ApexPages.currentPage().getParameters().get('id');
- }else {
- markupRecordId = (Id) myFlow.getVariableValue('MarkupRecordId');
- }
- return markupRecordId;
- }
- public String getPausedId() {
- String currentUser = UserInfo.getUserId();
- String interviewLabel = 'Product_Inspection' + myId;
- List<FlowInterview> interviews =
- [SELECT Id FROM FlowInterview WHERE CreatedById = :currentUser AND InterviewLabel = :interviewLabel order by LastModifiedDate];
- if (interviews == null || interviews.isEmpty()) {
- return null; // early out
- }
- // Return the ID for the first interview in the list
- return interviews.get(0).Id;
- }
- public Boolean getShowMarkUp() {
- Boolean showMarkUp=true;
- if (myFlow==null) {
- return false;
- } else {
- showMarkUp = (Boolean) myFlow.getVariableValue('ShowMarkUp');
- }
- return (showMarkUp==null ? false: showMarkUp);
- }
- public Boolean getShowFlow() {
- Boolean showFlow=true;
- if (myFlow==null) {
- return true;
- }else {
- showFlow = (Boolean) myFlow.getVariableValue('ShowFlow');
- }
- return (showFlow==null ? false: showFlow);
- }
Add Comment
Please, Sign In to add comment