Skip to content

Commit 4dd3031

Browse files
author
Blair McKenzie
committed
fix to custom cropping on other cropped properties
1 parent 78d93bd commit 4dd3031

File tree

1 file changed

+77
-1
lines changed

1 file changed

+77
-1
lines changed

packages/formtools/image.cfc

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,86 @@
2323
<!--- NOTE: this function needs to be able to handle non-ajax responses --->
2424
<!--- The main purpose of this override is to fix the result["filename"] value --->
2525

26-
<cfset var result = super.ajax(argumentCollection=arguments) />
26+
<cfset var result = "" />
2727
<cfset var callback = "" />
2828
<cfset var data = {} />
2929
<cfset var sourcePath = {} />
30+
<cfset var stSource = "" />
31+
<cfset var sourceField = "" />
32+
<cfset var stInfo = "" />
33+
<cfset var prefix = left(arguments.fieldname,len(arguments.fieldname)-len(arguments.stMetadata.name)) />
34+
35+
<cfif structkeyexists(url,"crop")>
36+
<cfset stSource = arguments.stObject />
37+
<cfset sourceField = listfirst(arguments.stMetadata.ftSourceField,":") />
38+
<cfif isArray(stSource[sourceField]) and arrayLen(stSource[sourceField])>
39+
<cfset stSource = application.fapi.getContentObject(objectid=stSource[sourceField][1]) />
40+
<cfset sourceField = listlast(arguments.stMetadata.ftSourceField,":") />
41+
<cfelseif issimplevalue(stSource[sourceField]) and isvalid("uuid",stSource[sourceField])>
42+
<cfset stSource = application.fapi.getContentObject(objectid=stSource[sourceField]) />
43+
<cfset sourceField = listlast(arguments.stMetadata.ftSourceField,":") />
44+
</cfif>
45+
46+
<cfif not structkeyexists(arguments.stMetadata,"ftImageWidth") or not isnumeric(arguments.stMetadata.ftImageWidth)><cfset arguments.stMetadata.ftImageWidth = 0 /></cfif>
47+
<cfif not structkeyexists(arguments.stMetadata,"ftImageHeight") or not isnumeric(arguments.stMetadata.ftImageHeight)><cfset arguments.stMetadata.ftImageHeight = 0 /></cfif>
48+
<cfparam name="arguments.stMetadata.ftAllowResizeQuality" default="false">
49+
<cfparam name="url.allowcancel" default="1" />
50+
51+
<cfif len(sourceField)>
52+
<cfset stInfo = application.fc.lib.cloudinary.getURLInformation(stSource[sourceField]) />
53+
54+
<cfsavecontent variable="html"><cfoutput>
55+
<div style="float:left;background-color:##cccccc;height:100%;width:65%;margin-right:1%;">
56+
<img id="cropable-image" src="#stInfo.untransformed#" style="max-width:none;" />
57+
</div>
58+
<div style="float:left;width:33%;">
59+
<div class="image-crop-instructions" style="overflow-y:auto;overlow-y:hidden;">
60+
<p class="image-resize-information alert alert-info">
61+
<strong style="font-weight:bold">Selection:</strong><br>
62+
Coordinates: (<span id="image-crop-a-x">?</span>,<span id="image-crop-a-y">?</span>) to (<span id="image-crop-b-x">?</span>,<span id="image-crop-b-y">?</span>)<br>
63+
<span id="image-crop-dimensions">Dimensions: <span id="image-crop-width">?</span>px x <span id="image-crop-height">?</span>px</span><br>
64+
<cfif arguments.stMetadata.ftImageWidth gt 0 and arguments.stMetadata.ftImageHeight gt 0>
65+
Ratio:
66+
<cfif arguments.stMetadata.ftImageWidth gt arguments.stMetadata.ftImageHeight>
67+
#numberformat(arguments.stMetadata.ftImageWidth/arguments.stMetadata.ftImageHeight,"9.99")#:1
68+
<cfelseif arguments.stMetadata.ftImageWidth lt arguments.stMetadata.ftImageHeight>
69+
1:#numberformat(arguments.stMetadata.ftImageHeight/arguments.stMetadata.ftImageWidth,"9.99")#
70+
<cfelse><!--- Equal --->
71+
1:1
72+
</cfif> <span style="font-style:italic;">(Fixed aspect ratio)</span><br>
73+
<cfelse>
74+
Ratio: <span id="image-crop-ratio-num">?</span>:<span id="image-crop-ratio-den">?</span><br>
75+
</cfif>
76+
<strong style="font-weight:bold">Output:</strong><br>
77+
Dimensions: <span id="image-crop-width-final">#arguments.stMetadata.ftImageWidth#</span>px x <span id="image-crop-height-final">#arguments.stMetadata.ftImageHeight#</span>px<br>
78+
Quality: <cfif arguments.stMetadata.ftAllowResizeQuality><input id="image-crop-quality" value="#arguments.stMetadata.ftQuality#" /><cfelse>#round(arguments.stMetadata.ftQuality*100)#%<input type="hidden" id="image-crop-quality" value="#arguments.stMetadata.ftQuality#" /></cfif>
79+
</p>
80+
<p id="image-crop-warning" class="alert alert-warning" style="display:none;">
81+
<strong style="font-weight:bold">Warning:</strong> The selected crop area is smaller than the output size. To avoid poor image quality choose a larger crop or use a higher resolution source image.
82+
</p>
83+
<p style="margin-top: 0.7em">To select a crop area:</p>
84+
<ol style="padding-left:10px;padding-top:0.7em">
85+
<li style="list-style:decimal outside;">Click and drag from the point on the image where the top left corner of the crop will start to the bottom right corner where the crop will finish.</li>
86+
<li style="list-style:decimal outside;">You can drag the selection box around the image if it isn't in the right place, or drag the edges and corners if the box isn't the right shape.</li>
87+
<li style="list-style:decimal outside;">Click "Crop and Resize" when you're done.</li>
88+
</ol>
89+
</div>
90+
<div class="image-crop-actions">
91+
<button id="image-crop-finalize" class="btn btn-large btn-primary" onclick="$fc.imageformtool('#prefix#','#arguments.stMetadata.name#').finalizeCrop();return false;">Crop and Resize</button>
92+
<cfif url.allowcancel>
93+
<a href="##" id="image-crop-cancel" class="btn btn-link" style="border:none;box-shadow:none;background:none">Cancel</a>
94+
</cfif>
95+
</div>
96+
</div>
97+
</cfoutput></cfsavecontent>
98+
99+
<cfreturn html />
100+
<cfelse>
101+
<cfreturn "<p>The source field is empty. <a href='##' onclick='$fc.imageformtool('#prefix#','#arguments.stMetadata.name#').endCrop();return false;'>Close</a></p>" />
102+
</cfif>
103+
</cfif>
104+
105+
<cfset result = super.ajax(argumentCollection=arguments) />
30106
31107
<!--- Parse data produced by ajax --->
32108
<cfif refind("^([^\(]+)\((.*)\)$", result)>

0 commit comments

Comments
 (0)