CRM-15193 - Support front/back end modes in CRM.url
authorColeman Watts <coleman@civicrm.org>
Wed, 27 Aug 2014 22:06:34 +0000 (23:06 +0100)
committerColeman Watts <coleman@civicrm.org>
Thu, 28 Aug 2014 13:38:45 +0000 (14:38 +0100)
CRM/Core/Resources.php
js/crm.ajax.js
templates/CRM/common/localization.js.tpl

index 876284a388411283b1bc05eaa382ae9d159586c1..e7bcf5046ce6dfd5f9a1dd53d43b464c581cb069 100644 (file)
@@ -475,6 +475,7 @@ class CRM_Core_Resources {
       // Add global settings
       $settings = array('config' => array(
         'ajaxPopupsEnabled' => $this->ajaxPopupsEnabled,
+        'isFrontend' => $config->userFrameworkFrontend,
       ));
       // Disable profile creation if user lacks permission
       if (!CRM_Core_Permission::check('edit all contacts') && !CRM_Core_Permission::check('add contacts')) {
index 2e3c1f81b9f51d872b7d6098dc10afcbd58b880e..0f1cad924249d4c503d072b9d81ee07bcf1ba1ad 100644 (file)
@@ -5,24 +5,24 @@
  */
 (function($, CRM, undefined) {
   /**
-   * Almost like {crmURL} but on the client side
-   * eg: var url = CRM.url('civicrm/contact/view', {reset:1,cid:42});
-   * or: $('a.my-link').crmURL();
+   * @param string p - url
+   * @param string|object params
+   * @param string mode - optionally specify "front" or "back"
    */
-  var tplURL = '/civicrm/example?placeholder';
-  var urlInitted = false;
-  CRM.url = function (p, params) {
+  var tplURL;
+  CRM.url = function (p, params, mode) {
     if (p == "init") {
-      tplURL = params;
-      urlInitted = true;
-      return;
+      return tplURL = params;
     }
-    if (!urlInitted) {
+    if (!tplURL) {
       console && console.log && console.log('Warning: CRM.url called before initialization');
     }
+    if (!mode) {
+      mode = CRM.config.isFrontend ? 'front' : 'back';
+    }
     params = params || '';
     var frag = p.split ('?');
-    var url = tplURL.replace("civicrm/example", frag[0]);
+    var url = tplURL[mode].replace("civicrm/example", frag[0]);
 
     if (typeof(params) == 'string') {
       url = url.replace("placeholder", params);
index 1edeffa6c8f2357c12e0c2cc1af431f5e531ef0e..e7f469c2a9c661406675a87700b8cf094d148c00 100644 (file)
@@ -37,7 +37,7 @@
   {rdelim}
   
   // Initialize CRM.url and CRM.formatMoney
-  CRM.url('init', '{crmURL p="civicrm/example" q="placeholder" h=0}');
+  CRM.url('init', {ldelim}back: '{crmURL p="civicrm/example" q="placeholder" h=0 fb=1}', front: '{crmURL p="civicrm/example" q="placeholder" h=0 fe=1}'{rdelim});
   CRM.formatMoney('init', {$moneyFormat});
 
   // Localize select2