Guest User

Untitled

a guest
Apr 24th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.01 KB | None | 0 0
  1. <cfcomponent displayname="Link Array" hint="A WDDX encoded array of links and their labels" extends="farcry.core.packages.formtools.field" output="false">
  2.  
  3. <!--- Custom property handlers --->
  4. <cffunction name="edit" access="public" output="false" returntype="string" hint="his will return a string of formatted HTML text to enable the user to edit the data">
  5. <cfargument name="typename" required="true" type="string" hint="The name of the type that this field is part of.">
  6. <cfargument name="stObject" required="true" type="struct" hint="The object of the record that this field is part of.">
  7. <cfargument name="stMetadata" required="true" type="struct" hint="This is the metadata that is either setup as part of the type.cfc or overridden when calling ft:object by using the stMetadata argument.">
  8. <cfargument name="fieldname" required="true" type="string" hint="This is the name that will be used for the form field. It includes the prefix that will be used by ft:processform.">
  9.  
  10. <cfset var html = "" />
  11. <cfset var aLinks = arraynew(1) />
  12. <cfset var i = 0 />
  13.  
  14. <cfimport taglib="/farcry/core/tags/webskin" prefix="skin" />
  15.  
  16. <cfparam name="arguments.stMetadata.ftLabelHeader" default="Label" />
  17. <cfparam name="arguments.stMetadata.ftURLHeader" default="URL" />
  18.  
  19. <cfif len(arguments.stMetadata.value) and iswddx(arguments.stMetadata.value)>
  20. <cfwddx action="wddx2cfml" input="#arguments.stMetadata.value#" output="aLinks" />
  21. </cfif>
  22.  
  23. <cfif findnocase("webkit",cgi.user_agent)>
  24.  
  25. <cfsavecontent variable="html">
  26. <cfoutput>
  27. <input type="hidden" name="#arguments.fieldname#" value=" " />
  28. <input type="hidden" name="#arguments.fieldname#length" id="#arguments.fieldname#length" value="#arraylen(aLinks)+3#" />
  29. <table id="#arguments.fieldname#links" class="relatedlinks" style="width:99%;">
  30. <tr>
  31. <th>#arguments.stMetadata.ftLabelHeader#</th>
  32. <th>#arguments.stMetadata.ftURLHeader#</th>
  33. <cfif not findnocase("safari",cgi.user_agent)><th>&nbsp;</th></cfif>
  34. </tr>
  35. <cfloop from="1" to="#arraylen(aLinks)#" index="i">
  36. <tr id='#arguments.fieldname#link#i#' class='relatedlink'>
  37. <td><input type='text' name='#arguments.fieldname#label#i#' id='#arguments.fieldname#label#i#' value='#aLinks[i].label#' /></td>
  38. <td><input type='text' name='#arguments.fieldname#url#i#' id='#arguments.fieldname#url#i#' value='#aLinks[i].url#' /></td>
  39. </tr>
  40. </cfloop>
  41. <cfloop from="#arraylen(aLinks)+1#" to="#arraylen(aLinks)+3#" index="i">
  42. <tr id='#arguments.fieldname#link#i#' class='relatedlink'>
  43. <td><input type='text' name='#arguments.fieldname#label#i#' id='#arguments.fieldname#label#i#' value='' /></td>
  44. <td><input type='text' name='#arguments.fieldname#url#i#' id='#arguments.fieldname#url#i#' value='' /></td>
  45. </tr>
  46. </cfloop>
  47. </table>
  48. </cfoutput>
  49. </cfsavecontent>
  50.  
  51. <cfelse>
  52.  
  53. <skin:htmlHead library="jqueryjs" />
  54. <skin:htmlHead><cfoutput>
  55. <script type="text/javascript">
  56. function addLinkItem(id,label,url){
  57. var jLen = jQ("##"+id+"length");
  58. var jAddLink = jQ("##"+id+"addlinks");
  59.  
  60. jLen.val(parseInt(jLen.val())+1);
  61.  
  62. jAddLink.before("<tr id='"+id+"link"+jLen.val()+"' class='relatedlink'><td><input type='text' name='"+id+"label"+jLen.val()+"' id='"+id+"label"+jLen.val()+"' value='"+label+"' /></td><td><input type='text' name='"+id+"url"+jLen.val()+"' id='"+id+"url"+jLen.val()+"' value='"+url+"' /></td><td style='text-align:right;'><a href='##' class='removelink' title='Remove' onclick='jQ(this).parents(\"tr.relatedlink\").remove();return false;'><img src='#application.url.webtop#/facade/icon.cfm?icon=delete&size=16' alt='Remove' /></a></td></tr>");
  63. };
  64. </script>
  65. </cfoutput></skin:htmlHead>
  66.  
  67. <cfsavecontent variable="html">
  68. <cfoutput>
  69. <input type="hidden" name="#arguments.fieldname#" value=" " />
  70. <input type="hidden" name="#arguments.fieldname#length" id="#arguments.fieldname#length" value="#arraylen(aLinks)+3#" />
  71. <table id="#arguments.fieldname#links" class="relatedlinks" style="width:99%;">
  72. <tr>
  73. <th>#arguments.stMetadata.ftLabelHeader#</th>
  74. <th>#arguments.stMetadata.ftURLHeader#</th>
  75. <cfif not findnocase("safari",cgi.user_agent)><th>&nbsp;</th></cfif>
  76. </tr>
  77. <cfloop from="1" to="#arraylen(aLinks)#" index="i">
  78. <tr id='#arguments.fieldname#link#i#' class='relatedlink'>
  79. <td><input type='text' name='#arguments.fieldname#label#i#' id='#arguments.fieldname#label#i#' value='#aLinks[i].label#' /></td>
  80. <td><input type='text' name='#arguments.fieldname#url#i#' id='#arguments.fieldname#url#i#' value='#aLinks[i].url#' /></td>
  81. <td style='text-align:right;'>
  82. <a href='##' class='removelink' title='Remove' onclick='jQ(this).parents("tr.relatedlink").remove();return false;'>
  83. <img src='#application.url.webtop#/facade/icon.cfm?icon=delete&size=16' alt='Remove' />
  84. </a>
  85. </td>
  86. </tr>
  87. </cfloop>
  88. <tr id="#arguments.fieldname#addlinks" class="relatedlink">
  89. <td><a href="##" class="addlink" onclick='addLinkItem("#arguments.fieldname#","","");return false;'><span>add link</span></a></td>
  90. <td></td>
  91. <td style="text-align:right;"><a href='##' class='addlink' title='Add' onclick='addLinkItem("#arguments.fieldname#","","");return false;'><img src='#application.url.webtop#/facade/icon.cfm?icon=add&size=16' alt='Add' /></a></td>
  92. </tr>
  93. </table>
  94. </cfoutput>
  95. </cfsavecontent>
  96.  
  97. </cfif>
  98.  
  99. <cfreturn html />
  100. </cffunction>
  101.  
  102. <cffunction name="validate" access="public" output="true" returntype="struct" hint="This will return a struct with bSuccess and stError">
  103. <cfargument name="stFieldPost" required="true" type="struct" hint="The fields that are relevent to this field type.">
  104. <cfargument name="stMetadata" required="true" type="struct" hint="This is the metadata that is either setup as part of the type.cfc or overridden when calling ft:object by using the stMetadata argument.">
  105.  
  106. <cfset var stResult = structnew() />
  107. <cfset var aLinks = arraynew(1) />
  108. <cfset var i = 0 />
  109. <cfset var stLink = structnew() />
  110.  
  111. <cfset stResult.bSuccess = true>
  112. <cfset stResult.value = "">
  113. <cfset stResult.stError = StructNew()>
  114.  
  115. <cfif structkeyexists(arguments.stFieldPost.stSupporting,"length")>
  116. <cfloop from="1" to="#arguments.stFieldPost.stSupporting.length#" index="i">
  117. <cfif structkeyexists(arguments.stFieldPost.stSupporting,"label#i#") and len(arguments.stFieldPost.stSupporting["label#i#"]) and
  118. structkeyexists(arguments.stFieldPost.stSupporting,"url#i#") and len(arguments.stFieldPost.stSupporting["url#i#"])>
  119. <cfset stLink = structnew() />
  120. <cfset stLink.label = arguments.stFieldPost.stSupporting["label#i#"] />
  121. <cfset stLink.url = arguments.stFieldPost.stSupporting["url#i#"] />
  122. <cfset arrayappend(aLinks,stLink) />
  123. </cfif>
  124. </cfloop>
  125.  
  126. <cfwddx action="cfml2wddx" input="#aLinks#" output="stResult.value" />
  127. </cfif>
  128.  
  129. <cfreturn stResult />
  130. </cffunction>
  131.  
  132. </cfcomponent>
Add Comment
Please, Sign In to add comment