Merge pull request #5592 from JKingsnorth/CRM-16256
[civicrm-core.git] / Civi / Angular / Manager.php
index bb3043ff8decf9f55c4983959ad4a209f4cfb749..a9036908ad22a115c61666b230db257af1ba37ca 100644 (file)
@@ -37,7 +37,7 @@ class Manager {
   }
 
   /**
-   * Get a list of AngularJS modules which should be autoloaded
+   * Get a list of AngularJS modules which should be autoloaded.
    *
    * @return array
    *   Each item has some combination of these keys:
@@ -61,18 +61,23 @@ class Manager {
       );
       $angularModules['crmApp'] = array(
         'ext' => 'civicrm',
-        'js' => array('js/angular-crmApp.js'),
+        'js' => array('ang/crmApp.js'),
       );
       $angularModules['crmAttachment'] = array(
         'ext' => 'civicrm',
-        'js' => array('js/angular-crmAttachment.js'),
-        'css' => array('css/angular-crmAttachment.css'),
-        'partials' => array('partials/crmAttachment'),
+        'js' => array('ang/crmAttachment.js'),
+        'css' => array('ang/crmAttachment.css'),
+        'partials' => array('ang/crmAttachment'),
       );
       $angularModules['crmAutosave'] = array(
         'ext' => 'civicrm',
-        'js' => array('js/angular-crmAutosave.js'),
+        'js' => array('ang/crmAutosave.js'),
       );
+      //$angularModules['crmExample'] = array(
+      //  'ext' => 'civicrm',
+      //  'js' => array('ang/crmExample.js'),
+      //  'partials' => array('ang/crmExample'),
+      //);
       $angularModules['crmResource'] = array(
         'ext' => 'civicrm',
         // 'js' => array('js/angular-crmResource/byModule.js'), // One HTTP request per module.
@@ -80,22 +85,18 @@ class Manager {
       );
       $angularModules['crmUi'] = array(
         'ext' => 'civicrm',
-        'js' => array('js/angular-crm-ui.js', 'packages/ckeditor/ckeditor.js'),
-        'partials' => array('partials/crmUi'),
+        'js' => array('ang/crmUi.js'),
+        'partials' => array('ang/crmUi'),
       );
       $angularModules['crmUtil'] = array(
         'ext' => 'civicrm',
-        'js' => array('js/angular-crm-util.js'),
+        'js' => array('ang/crmUtil.js'),
       );
       // https://github.com/jwstadler/angular-jquery-dialog-service
       $angularModules['dialogService'] = array(
         'ext' => 'civicrm',
         'js' => array('bower_components/angular-jquery-dialog-service/dialog-service.js'),
       );
-      $angularModules['ngSanitize'] = array(
-        'ext' => 'civicrm',
-        'js' => array('js/angular-sanitize.js'),
-      );
       $angularModules['ui.utils'] = array(
         'ext' => 'civicrm',
         'js' => array('bower_components/angular-ui-utils/ui-utils.min.js'),
@@ -254,36 +255,42 @@ class Manager {
   }
 
   /**
-   * @param string $name
-   *   Module name.
+   * Get resources for one or more modules.
+   *
+   * @param string|array $moduleNames
+   *   List of module names.
+   * @param string $resType
+   *   Type of resource ('js', 'css').
+   * @param string $refType
+   *   Type of reference to the resource ('cacheUrl', 'rawUrl', 'path').
    * @return array
-   *   List of URLs.
-   * @throws \Exception
+   *   List of URLs or paths.
+   * @throws \CRM_Core_Exception
    */
-  public function getScriptUrls($name) {
-    $module = $this->getModule($name);
+  public function getResources($moduleNames, $resType, $refType) {
     $result = array();
-    if (isset($module['js'])) {
-      foreach ($module['js'] as $file) {
-        $result[] = $this->res->getUrl($module['ext'], $file, TRUE);
-      }
-    }
-    return $result;
-  }
+    $moduleNames = (array) $moduleNames;
+    foreach ($moduleNames as $moduleName) {
+      $module = $this->getModule($moduleName);
+      if (isset($module[$resType])) {
+        foreach ($module[$resType] as $file) {
+          switch ($refType) {
+            case 'path':
+              $result[] = $this->res->getPath($module['ext'], $file);
+              break;
 
-  /**
-   * @param string $name
-   *   Module name.
-   * @return array
-   *   List of URLs.
-   * @throws \Exception
-   */
-  public function getStyleUrls($name) {
-    $module = $this->getModule($name);
-    $result = array();
-    if (isset($module['css'])) {
-      foreach ($module['css'] as $file) {
-        $result[] = $this->res->getUrl($module['ext'], $file, TRUE);
+            case 'rawUrl':
+              $result[] = $this->res->getUrl($module['ext'], $file);
+              break;
+
+            case 'cacheUrl':
+              $result[] = $this->res->getUrl($module['ext'], $file, TRUE);
+              break;
+
+            default:
+              throw new \CRM_Core_Exception("Unrecognized resource format");
+          }
+        }
       }
     }
     return $result;