Author: andyhot
Date: Sun Nov 11 23:57:29 2007
New Revision: 594039
URL: http://svn.apache.org/viewvc?rev=594039&view=rev
Log:
The skeleton tapestry javascript file that does nothing! But it does contain
all (i hope) functions that tapestry-framework and tapestry-contrib use and is
a good starting point for introducing several js frameworks. Application using
this should not present any javascript errors - they'd just behave as if
javascript was disabled.
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/skeleton/
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/skeleton/core.js
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/skeleton/core.js
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/skeleton/core.js?rev=594039&view=auto
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/skeleton/core.js
(added)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/skeleton/core.js
Sun Nov 11 23:57:29 2007
@@ -0,0 +1,161 @@
+/**
+ * This is a skeleton file. It contains the
+ * javascript objects and methods that tapestry requires.
+ *
+ * It should be used as a reference for building implementations
+ * specific to existing javascript frameworks.
+ */
+
+// the two required objects, dojo and tapestry
+var dojo={
+ // those methods should only be needed for the dojo implementations
+ // others will probably leave those empty
+ registerModulePath: function() {tapestry.log('dojo.registerModulePath',
arguments);},
+ require: function() {tapestry.log('dojo.require', arguments);}
+};
+
+var tapestry={
+ // setup firebug logging - useful for finding unimplemented methods
+ log: function() {
+ if (console) console.log.apply(this, arguments);
+ },
+ /**
+ * Executes the passed function when the document has done loading
+ */
+ addOnLoad: function(fn) {
+ tapestry.log('t.addOnLoad');
+ },
+ /**
+ * Returns the dom node with the given id
+ */
+ byId: document.getElementById,
+
+ /**
+ * Makes sure that the given namespace (passed as a string) exists
+ * and is a valid javascript object.
+ */
+ provide: function() {tapestry.log('t.provide', arguments);},
+
+ /**
+ * Connects the event of the given target node to the given function of
+ * the global namespace "tapestry".
+ * Users of this method usually attach custom methods to the tapestry
namespace
+ * before calling this.
+ *
+ * Parameters: target, event, funcName
+ */
+ connect: function() {tapestry.log('t.connect', arguments);},
+
+ /**
+ * Disconnects the event of the given target node from the given function
of
+ * the global namespace "tapestry"
+ *
+ * Parameters: target, event, funcName
+ */
+ cleanConnect: function() {tapestry.log('t.cleanConnect', arguments);},
+
+ /**
+ * Perform an XHR.
+ * Implementation should set the mime-type to either "text/xml" or
+ * "text/json" and include the request headers described in the
comments to the
+ * json parameter.
+ * Implementations are also responsible for handling the responses.
+ *
+ * Parameters:
+ * url - The url to bind the request to.
+ * content - A properties map of optional extra content to send.
+ * json - (Optional) Boolean parameter specifying whether or not to
create a
+ * json request. If true, the request headers should
include "json":true.
+ * If false or unspecified, they should contain
"dojo-ajax-request":true
+ */
+ bind: function(url, content, json){tapestry.log('t.bind', arguments);},
+
+ /**
+ * Helper that builds the content from eventName and (triggered) id and
then forwards
+ * execution to tapestry.bind
+ *
+ * @param url
+ * @param id
+ * @param json
+ * @param eventName
+ */
+ linkOnClick: function(url, id, json, eventName)
{tapestry.log('t.linkOnClick', arguments);}
+};
+
+tapestry.form = {
+ /**
+ * Submits the specified form.
+ * Should check the value of form.submitmode to find out what type of
+ * submission (cancel, refresh or normal) to do and whether to run client
validation.
+ *
+ * Parameters:
+ * form - The form or form id to submit.
+ * submitName - (Optional) Submit name to use when submitting.
This is used
+ * to associate a form submission
with a particular component.
+ * Implementations will typically just set
form.submitname to this value.
+ * parms - (Optional) Extra set of parameters.
Implementations can just look for
+ * the async key and if that's set to true, they should
perform an async
+ * submission.
+ */
+ submit: function(formId, submitName, parms) {tapestry.log('t.f.submit',
arguments);},
+
+ /** Same as submit, but forces cancel submission */
+ cancel: function(formId, submitName, parms) {tapestry.log('t.f.submit',
arguments);},
+
+ /** Same as submit, but forces refresh submission */
+ refresh: function(formId, submitName, parms) {tapestry.log('t.f.submit',
arguments);},
+
+ /**
+ * Registers a form and allows definition of its properties.
+ * Implementation should keep track of such properties and
+ * use them later on, when the form is submitted.
+ *
+ * Parameters:
+ * id - The form or form id to register.
+ * async - Boolean, if true form submission should be
asynchronous.
+ * json - Boolean, if true form submission should be
asyncrhronous json.
+ */
+ registerForm: function(formId, async, json)
{tapestry.log('t.f.registerForm', arguments);},
+
+ /**
+ * Registers a form validation/translation profile.
+ * TODO: Describe profile structure.
+ *
+ * Parameters:
+ * formId - The form or form id to register profile
with.
+ * profile - The object containing all of the
validation/value constraints for the form.
+ */
+ registerProfile: function(formId, profile)
{tapestry.log('t.f.registerProfile', arguments);},
+
+ /**
+ * Clears any previously registered validation profiles on the
specified form.
+ *
+ * Parameters:
+ * formId - The form id to clear profiles for.
+ */
+ clearProfiles: function(formId) {tapestry.log('t.f.clearProfiles',
arguments);},
+
+ /**
+ * Brings keyboard input focus to the specified field.
+ */
+ focusField: function(fieldId) {tapestry.log('t.f.focusField', arguments);},
+
+ // TODO: Describe validation methods
+ datetime: {
+ isValidDate: function(date) {tapestry.log('t.f.d.isValidDate',
arguments);return true;}
+ },
+
+ validation: {
+ isReal: function() {tapestry.log('t.f.v.isReal', arguments);return
true;},
+ greaterThanOrEqual: function()
{tapestry.log('t.f.v.greaterThanOrEqual', arguments);return true;},
+ lessThanOrEqual: function() {tapestry.log('t.f.v.lessThanOrEqual',
arguments);return true;},
+ isText: function() {tapestry.log('t.f.v.isText', arguments);return
true;},
+ isEmailAddress: function() {tapestry.log('t.f.v.isEmailAddress',
arguments);return true;},
+ isValidPattern: function() {tapestry.log('t.f.v.isValidPattern',
arguments);return true;},
+ validateForm: function() {tapestry.log('t.f.v.validateForm',
arguments);return true;}
+ }
+};
+
+tapestry.event = {
+ stopEvent: function() {tapestry.log('t.e.stopEvent', arguments);}
+};