This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
devel:hacking [2012/09/18 08:38] bredal [Headline] |
devel:hacking [2013/01/30 09:42] norangshol [Accessing resources with ajax requiring authentication] |
||
---|---|---|---|
Line 131: | Line 131: | ||
When the module is done you write a controller for the page that plugs the needed plugins to the page elements. This should fail gracefully if the needed elements are not present. | When the module is done you write a controller for the page that plugs the needed plugins to the page elements. This should fail gracefully if the needed elements are not present. | ||
- | NAVs javascript uses [[http://requirejs.org/|require.js]] - use this to create modules and specify dependencies. | + | NAVs javascript uses [[http://requirejs.org/|require.js]] - use this to create modules and specify dependencies. |
+ | |||
+ | Pro tip is to create ''require_config.dev.js'' in ''media/js/'' and add the following configuration to requirejs: | ||
+ | <code>require.urlArgs = "bust=" + (new Date()).getTime();</code> This makes sure your not using cached resources in your browser when developing, which browsers loves to do! See [[http://requirejs.org/docs/api.html#config-urlArgs|config-urlArgs]] in requirejs documentation for «details». The ''require_config.dev.js'' is added in global HG ignore. | ||
+ | |||
+ | ==== Accessing resources with ajax requiring authentication ==== | ||
+ | |||
+ | As your authenticated session might have timed out due to idle (no activity), resources will return 500 Internal Error if you do not supply the important ''//X-NAV-AJAX//'' header on your ajax requests. | ||
+ | |||
+ | So make sure to include the ''**X-NAV-AJAX**'' header so you will get proper HTTP response code in the reponse from your request. | ||
+ | |||
+ | NAV has a shortcut for fixing this in ''default.js'' (adds a function in the public namespace NAV) which attaches the required handlers for jQuery by doing: | ||
+ | <code>NAV.addGlobalAjaxHandlers()</code> | ||
====== Database ====== | ====== Database ====== | ||
NAV uses PostgreSQL as its database backend. Namespaces (schemas) are | NAV uses PostgreSQL as its database backend. Namespaces (schemas) are |