|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
webskins using ajax - how to pass in dataI have the following code
<skin:view typename="pslClient" template="displayBodyASXNews" bAjax="false" stProperties="#stObj#" /> that populates the stParam struct with stProperties But where I set bAjax to TRUE it does not get passed in Which is most likely fair enough can the browser is calling the webskin directly So, how do you go about passing data to an ajax webskin? In this instance, it is within a rule execute.cfm Farcry 5.2 -- AJ Mercer Web Log: http://webonix.net --~--~---------~--~----~------------~-------~--~----~ You received this message cos you are subscribed to "farcry-dev" Google group. To post, email: farcry-dev@... To unsubscribe, email: farcry-dev+unsubscribe@... For more options: http://groups.google.com/group/farcry-dev -------------------------------- Follow us on Twitter: http://twitter.com/farcry -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: webskins using ajax - how to pass in dataYou can't. bAjax is just a shortcut for a very simple case. If you want to do something more complex you really need to do it yourself.
Blair On Wed, Oct 21, 2009 at 4:17 PM, AJ Mercer <ajmercer@...> wrote: I have the following code --~--~---------~--~----~------------~-------~--~----~ You received this message cos you are subscribed to "farcry-dev" Google group. To post, email: farcry-dev@... To unsubscribe, email: farcry-dev+unsubscribe@... For more options: http://groups.google.com/group/farcry-dev -------------------------------- Follow us on Twitter: http://twitter.com/farcry -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: webskins using ajax - how to pass in dataHi Blair,
Here is some hacked code out of fourq.cfc (5.2.something not necessarily current) that appends stParam attributes to the URL passed to ajax function (search for AJM for hacks) Thoughts / Comments <cffunction name="getView" access="public" output="true" returntype="string" hint="Returns the HTML of a view from the webskin content type folder."> <cfargument name="objectid" required="no" type="string" default="" hint="ObjectID of the object that is to be rendered by the webskin view." /> <cfargument name="template" required="no" type="string" default="" hint="Name of the template in the corresponding content type webskin folder, without the .cfm extension." /> <cfargument name="webskin" required="no" type="string" default="" hint="Name of the template in the corresponding content type webskin folder, without the .cfm extension." /> <cfargument name="stparam" required="false" type="struct" default="#structNew()#" hint="Structure of parameters to be passed into the display handler." /> <cfargument name="stobject" required="no" type="struct" hint="Property structure to render in view. Overrides any property structure mapped to arguments.objectid. Useful if you want to render a view with a modified content item."> <cfargument name="dsn" required="no" type="string" default="#application.dsn#"> <cfargument name="OnExit" required="no" type="any" default=""> <cfargument name="alternateHTML" required="no" type="string" hint="If the webskin template does not exist, if this argument is sent in, its value will be passed back as the result."> <cfargument name="hashKey" required="no" default="" type="string" hint="Pass in a key to be used to hash the objectBroker webskin cache"> <cfargument name="bAjax" required="no" default="0" type="boolean" hint="Flag to determine whether to render an ajax call to load the webskin instead of inline." /> <cfargument name="ajaxID" required="no" default="" type="string" hint="The id to give the div that will call the ajaxed webskin" /> <cfargument name="ajaxShowloadIndicator" required="no" default="false" type="boolean" hint="Should the ajax loading indicator be shown" /> <cfargument name="ajaxindicatorText" required="no" default="loading..." type="string" hint="What should be text of the loading indicator" /> <cfargument name="bIgnoreSecurity" required="false" type="boolean" default="false" hint="Should the getView() ignore webskin security" /> <cfargument name="bAllowTrace" required="false" type="boolean" default="true" hint="Sometimes having webskin trace information can break the integrity of a page. This allows you to turn it off." /> <cfset var stResult = structNew() /> <cfset var stObj = StructNew() /> <cfset var WebskinPath = "" /> <cfset var stWebskin = structNew() /> <cfset var stCurrentView = structNew() /> <cfset var stArgs = structnew() /> <cfset var i = 0 /> <cfset var stLocal = structNew() /><!--- A local scope that can be used in webskins to ensure against race conditions. ---> <cfset var webskinTypename = "" /><!--- This will store the typename of the webskin to be called. Required in the case of Type Webskins. ---> <cfset var iViewState = "" /><!--- iterator used when adding to ancestor cacheBySessionVar lists ---> <cfset var lAttributes = "stobject,typename,objectid,key,template,webskin,stprops,stparam,r_html,r_objectid,hashKey,alternateHTML,OnExit,dsn,bAjax,ajaxID,ajaxShowloadIndicator,ajaxindicatorText,bIgnoreSecurity" /> <cfset var attrib = "" /> <cfset var lHashKeys = "" /> <cfset var iHashKey = "" /> <cfset var urlParameters = "" /> <!--- AJM ---> <cfimport taglib="/farcry/core/tags/extjs" prefix="extjs" /> <cfimport taglib="/farcry/core/tags/webskin" prefix="skin" /> <cfimport taglib="/farcry/core/tags/farcry" prefix="farcry" /> <!--- Initialise webskin trace array ---> <cfparam name="request.aAncestorWebskinsTrace" default="#arrayNew(1)#" /><!--- To Be Used for Trace Tree ---> <!--- init fourq ---> <cfset fourqInit() /> <cfset webskinTypename = "#variables.typename#" /><!--- Set the typename to the typename of this object instance ---> <cfif len(arguments.webskin)> <cfset arguments.template = arguments.webskin /> <cfelseif not len(arguments.template)> <cfthrow message="The getView function requires the template or webskin argument."> </cfif> <!--- make sure that .cfm isn't passed to this method in the template argument ---> <cfif listLast(arguments.template,".") EQ "cfm"> <cfset arguments.template = ReplaceNoCase(arguments.template,".cfm", "", "all") /> </cfif> <cftimer label="view: #webskinTypename# #arguments.template#"> <cfif isDefined("arguments.stobject") and not structIsEmpty(arguments.stObject)> <cfset stobj=arguments.stobject /> <cfelse> <cfif not len(arguments.objectid)> <!--- WE WANT TO CALL A TYPE WEBSKIN THIS MEANS THAT THE OBJECT THAT WE ARE PASSING TO THE WEBSKIN IS ACTUALLY THE farCOAPI object. THE WEBSKIN CACHING IS ALSO DONE AGAINST THE farCOAPI object. ---> <cfset stObj = application.fc.factory['farCoapi'].getCoapiObject(name="#webskinTypename#") /> <cfelse> <!--- get the data for this instance ---> <cfset stObj = getData(objectid=arguments.objectID,dsn=arguments.dsn)> </cfif> </cfif> <cfif arguments.bAjax> <cfif not len(arguments.ajaxID)> <cfset arguments.ajaxID = "#stobj.typename#_#stobj.objectid#_#arguments.template#" /> </cfif> <skin:htmlHead library="extjsCore" /> <skin:htmlHead id="webskinAjaxLoader"> <cfoutput> <script type="text/javascript"> function webskinAjaxLoader(divID,action,timeout,showLoadIndicator,indicatorText){ if (timeout == undefined){var timeout = 30}; if (showLoadIndicator == undefined){var showLoadIndicator = false}; if (indicatorText == undefined){var indicatorText = 'loading...'}; var el = Ext.get(divID); if(el) { var mgr = el.getUpdater(); mgr.showLoadIndicator = showLoadIndicator; if (showLoadIndicator==true){ mgr.indicatorText = indicatorText; } mgr.update( { url: action, nocache: true, scripts: true, timeout: timeout }); } } </script> </cfoutput> </skin:htmlHead> <!--- Get the url for the ajax webskin loader ---> <!--- AJM: add stParams to URL ---> <cfset urlParameters="view=#arguments.template#&ajaxmode=1" /> <!--- Setup custom attributes passed into getView in stParam structure ---> <cfif not structIsEmpty(arguments.stParam)> <cfset lHashKeys = listSort(structKeyList(arguments.stParam),"text", "asc") /> <cfloop list="#lHashKeys#" index="iHashKey"> <cfif IsSimpleValue(arguments.stParam[iHashKey])> <cfset urlParameters = "#urlParameters#&#iHashKey#=#arguments.stParam[iHashKey]#" /> <cfelse> <!--- dunno?? ---> </cfif> </cfloop> </cfif> <cfset urlAjaxLoader = application.fapi.getLink(type="#stobj.typename#", objectid="#stobj.objectid#", urlParameters="#urlParameters#") /> <!--- /AJM ---> <!--- AJM <cfset urlAjaxLoader = application.fapi.getLink(type="#stobj.typename#", objectid="#stobj.objectid#", urlParameters="view=#arguments.template#&ajaxmode=1") /> ---> <cfsavecontent variable="stWebskin.webskinHTML"> <cfoutput> <farcry:traceWebskin objectid="#stobj.objectid#" typename="#stobj.typename#" template="#arguments.template#"> <div id="#arguments.ajaxID#"></div> </farcry:traceWebskin> <extjs:onReady> <cfoutput> webskinAjaxLoader('#arguments.ajaxID#', '#urlAjaxLoader#', 30, #arguments.ajaxShowLoadIndicator#, '#arguments.ajaxIndicatorText#'); </cfoutput> </extjs:onReady> </cfoutput> </cfsavecontent> <cfelse> <!--- Setup custom attributes passed into getView in stParam structure ---> <cfloop collection="#arguments#" item="attrib"> <cfif not listFindNoCase(lAttributes, attrib)> <cfset arguments.stParam[attrib] = arguments[attrib] /> </cfif> </cfloop> <!--- If we are potentially caching this webskin, and we have passed in parameters, we need to create a hash key that uniquely identifies these parameters and cache agains them ---> <cfif application.bObjectBroker AND application.stcoapi[webskinTypename].bObjectBroker AND len(arguments.template) AND structKeyExists(application.stcoapi[webskinTypename].stWebskins, arguments.template) AND application.stcoapi[webskinTypename].stWebskins[arguments.template].cacheStatus EQ 1> <cfif not structIsEmpty(arguments.stParam)> <cfset lHashKeys = listSort(structKeyList(arguments.stParam),"text", "asc") /> <cfloop list="#lHashKeys#" index="iHashKey"> <cfif IsSimpleValue(arguments.stParam[iHashKey])> <cfset arguments.hashKey = listAppend(arguments.hashKey, "stParam[#iHashKey#]:#arguments.stParam[iHashKey]#") /> <cfelse> <cfset arguments.hashKey = listAppend(arguments.hashKey, "stParam[#iHashKey#]:{complex}") /> </cfif> </cfloop> </cfif> </cfif> <!--- Check permissions on this webskin ---> <cfif not bIgnoreSecurity> <cfif arguments.template eq "deniedaccess" or not application.security.checkPermission(type=webskinTypename,webskin=arguments.template)> <!--- Make sure this page doesn't get cached ---> <cfif structKeyExists(request, "aAncestorWebskins")> <cfloop from="1" to="#arraylen(request.aAncestorWebskins)#" index="i"> <cfset request.aAncestorWebskins[i].okToCache = 0 /> <cfif structKeyExists(stCurrentView, "cacheTimeout")> <cfset request.aAncestorWebskins[i].cacheTimeout = stCurrentView.cacheTimeout /> </cfif> </cfloop> </cfif> <cfsavecontent variable="stWebskin.webskinHTML"><cfinclude template="#getWebskinPath(webskinTypename,'deniedaccess')#" /></cfsavecontent> <cfreturn stWebskin.webskinHTML /> </cfif> </cfif> <cfif NOT structIsEmpty(stObj)> <cfset stWebskin = application.fc.lib.objectbroker.getWebskin(objectid=stobj.objectid, typename=stobj.typename, template=arguments.template, hashKey="#arguments.hashKey#") /> <cfif not len(stWebskin.webskinHTML)> <cfif stobj.typename EQ "farCoapi"> <!--- This means its a type webskin and we need to look for the timeout value on the related type. ---> <cfset stCoapi = application.fc.factory['farCoapi'].getData(objectid="#stobj.objectid#") /> <cfset webskinTypename = stCoapi.name /> </cfif> <cfset webskinPath = application.coapi.coapiadmin.getWebskinPath(typename=webskinTypename, template=arguments.template) /> <cfif len(webskinPath)> <cfset stWebskin.webskinHTML = runView( stobj="#stobj#", webskinTypename="#webskinTypename#", webskinTemplate="#arguments.template#", webskinPath="#webskinPath#", webskinCacheID="#stWebskin.webskinCacheID#", hashKey="#arguments.hashKey#", stParam="#arguments.stParam#", OnExit="#arguments.onExit#", dsn="#arguments.dsn#", bAllowTrace="#arguments.bAllowTrace#") /> <cfelseif structKeyExists(arguments, "alternateHTML")> <cfset stWebskin.webskinHTML = arguments.alternateHTML /> <cfelse> <cfthrow type="Application" message="Error: Template not found [/webskin/#webskinTypename#/#arguments.template#.cfm] and no alternate html provided." detail="Error: Template not found [/webskin/#webskinTypename#/#arguments.template#.cfm] and no alternate html provided. typename: #stobj.typename#. objectid: #stobj.objectid#." /> </cfif> </cfif> <cfelse> <cfthrow type="Application" detail="Error: When trying to render [/webskin/#webskinTypename#/#arguments.template#.cfm] the object was not created correctly." /> </cfif> <cfif structKeyExists(request, "aAncestorWebskins") AND arrayLen(request.aAncestorWebskins)> <cfset request.currentViewTypename = request.aAncestorWebskins[arrayLen(request.aAncestorWebskins)].typename /> <cfset request.currentViewTemplate = request.aAncestorWebskins[arrayLen(request.aAncestorWebskins)].template /> </cfif> </cfif> </cftimer> <cfreturn stWebskin.webskinHTML /> </cffunction> 2009/10/21 Blair McKenzie <shib71@...> You can't. bAjax is just a shortcut for a very simple case. If you want to do something more complex you really need to do it yourself. -- AJ Mercer Web Log: http://webonix.net --~--~---------~--~----~------------~-------~--~----~ You received this message cos you are subscribed to "farcry-dev" Google group. To post, email: farcry-dev@... To unsubscribe, email: farcry-dev+unsubscribe@... For more options: http://groups.google.com/group/farcry-dev -------------------------------- Follow us on Twitter: http://twitter.com/farcry -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: webskins using ajax - how to pass in dataCould work. Add a ticket. We'll have to get Matt (the mastermind behind this feature) to have a look at it.
Blair On Wed, Oct 21, 2009 at 5:14 PM, AJ Mercer <ajmercer@...> wrote: Hi Blair, --~--~---------~--~----~------------~-------~--~----~ You received this message cos you are subscribed to "farcry-dev" Google group. To post, email: farcry-dev@... To unsubscribe, email: farcry-dev+unsubscribe@... For more options: http://groups.google.com/group/farcry-dev -------------------------------- Follow us on Twitter: http://twitter.com/farcry -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: webskins using ajax - how to pass in datahttp://bugs.farcrycms.org/browse/FC-1999
Is anyone using AJAX webskins? Please vote for this is you think it will be useful.
2009/10/21 Blair McKenzie <shib71@...> Could work. Add a ticket. We'll have to get Matt (the mastermind behind this feature) to have a look at it. -- AJ Mercer Web Log: http://webonix.net --~--~---------~--~----~------------~-------~--~----~ You received this message cos you are subscribed to "farcry-dev" Google group. To post, email: farcry-dev@... To unsubscribe, email: farcry-dev+unsubscribe@... For more options: http://groups.google.com/group/farcry-dev -------------------------------- Follow us on Twitter: http://twitter.com/farcry -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: webskins using ajax - how to pass in datatrack for beginners if using ajax webskins within a contailer that has multiple rules - make sure you defined a unique ajaxID yourself
otherwise all you will see is the rulsults from the last rule. <skin:view typename="ruleHomeResearch" template="displayBodyHomeResearch" stParam="#stParam#" bAjax="true" ajaxShowloadIndicator="true" ajaxindicatorText="Loading..." ajaxID="homeResearch#Replace(stObj.category, ' ', '', 'ALL')#" /> 2009/10/21 AJ Mercer <ajmercer@...> -- http://bugs.farcrycms.org/browse/FC-1999 AJ Mercer Web Log: http://webonix.net --~--~---------~--~----~------------~-------~--~----~ You received this message cos you are subscribed to "farcry-dev" Google group. To post, email: farcry-dev@... To unsubscribe, email: farcry-dev+unsubscribe@... For more options: http://groups.google.com/group/farcry-dev -------------------------------- Follow us on Twitter: http://twitter.com/farcry -~----------~----~----~----~------~----~------~--~--- |
| Free embeddable forum powered by Nabble | Forum Help |