From 266e7ad1c90bd93c30937458f57200c85a5b613b Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Tue, 12 Jun 2018 22:21:59 -0700 Subject: [PATCH] Implement standalone page support --- ext/afform/CRM/Afform/Page/AfformBase.php | 17 +++++++++++------ ext/afform/ang/afformStandalone.ang.php | 18 ++++++++++++++++++ ext/afform/ang/afformStandalone.js | 4 ++++ ext/afform/ang/afformStandalone/PageCtrl.js | 13 +++++++++++++ 4 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 ext/afform/ang/afformStandalone.ang.php create mode 100644 ext/afform/ang/afformStandalone.js create mode 100644 ext/afform/ang/afformStandalone/PageCtrl.js diff --git a/ext/afform/CRM/Afform/Page/AfformBase.php b/ext/afform/CRM/Afform/Page/AfformBase.php index bfea8a8540..75daf17cba 100644 --- a/ext/afform/CRM/Afform/Page/AfformBase.php +++ b/ext/afform/CRM/Afform/Page/AfformBase.php @@ -7,13 +7,18 @@ class CRM_Afform_Page_AfformBase extends CRM_Core_Page { // echo '
';print_r(func_get_args());exit();
     list ($pagePath, $pageArgs) = func_get_args();
 
-    // Example: Set the page-title dynamically; alternatively, declare a static title in xml/Menu/*.xml
-    CRM_Utils_System::setTitle(E::ts('AfformBase'));
+    $module = _afform_angular_module_name($pageArgs['afform']);
 
-    // Example: Assign a variable for use in a template
-    $this->assign('currentTime', date('Y-m-d H:i:s'));
-
-    $this->assign('afform', $pageArgs['afform']);
+    $loader = new \Civi\Angular\AngularLoader();
+    $loader->setModules([$module, 'afformStandalone']);
+    $loader->setPageName(implode('/', $pagePath));
+    $loader->useApp();
+    $loader->getRes()->addSetting([
+      'afform' => [
+        'open' => _afform_angular_module_name($pageArgs['afform'], 'dash'),
+      ],
+    ]);
+    $loader->load();
 
     parent::run();
   }
diff --git a/ext/afform/ang/afformStandalone.ang.php b/ext/afform/ang/afformStandalone.ang.php
new file mode 100644
index 0000000000..2fbf67d02f
--- /dev/null
+++ b/ext/afform/ang/afformStandalone.ang.php
@@ -0,0 +1,18 @@
+ array(
+    'ang/afformStandalone.js',
+    'ang/afformStandalone/*.js',
+    'ang/afformStandalone/*/*.js',
+  ),
+  'css' => array(),
+  'partials' => array(
+    'ang/afformStandalone',
+  ),
+  'settings' => array(),
+  'requires' => ['ngRoute'],
+);
diff --git a/ext/afform/ang/afformStandalone.js b/ext/afform/ang/afformStandalone.js
new file mode 100644
index 0000000000..c7b03a2a86
--- /dev/null
+++ b/ext/afform/ang/afformStandalone.js
@@ -0,0 +1,4 @@
+(function(angular, $, _) {
+  // Declare a list of dependencies.
+  angular.module('afformStandalone', CRM.angRequires('afformStandalone'));
+})(angular, CRM.$, CRM._);
diff --git a/ext/afform/ang/afformStandalone/PageCtrl.js b/ext/afform/ang/afformStandalone/PageCtrl.js
new file mode 100644
index 0000000000..8c39fc4055
--- /dev/null
+++ b/ext/afform/ang/afformStandalone/PageCtrl.js
@@ -0,0 +1,13 @@
+(function(angular, $, _) {
+
+  angular.module('afformStandalone').config(function($routeProvider) {
+      $routeProvider.when('/', {
+        controller: 'AfformStandalonePageCtrl',
+        template: function() {return '
'; } + }); + } + ); + + angular.module('afformStandalone').controller('AfformStandalonePageCtrl', function($scope) {}); + +})(angular, CRM.$, CRM._); -- 2.25.1