</tr>
</thead>
<tbody>
- <tr ng-repeat="cxn in cxns | orderBy:cxnOrder.get()">
- <td>{{cxn.app_meta.title}}</td>
+ <tr ng-repeat="cxn in cxns | orderBy:cxnOrder.get()" ng-class-even="'even-row even'" ng-class-odd="'odd-row odd'">
+ <td>
+ <a class="action-item"
+ crm-confirm='{width: "65%", resizable: true, title:ts("%1: About", {1: cxn.app_meta.title}), templateUrl: "~/crmCxn/AboutCtrl.html", export: {appMeta: cxn.app_meta}}'
+ >{{cxn.app_meta.title}}</a>
+ </td>
<td><div ng-bind-html="cxn.app_meta.desc"></div></td>
- <td>{{cxn.is_active ? ts('Enabled') : ts('Disabled')}}</td>
+ <td>{{cxn.is_active=="1" ? ts('Enabled') : ts('Disabled')}}</td>
<td>
- <a class="action-item crm-hover-button" ng-click="openLink(cxn.app_meta, 'settings', {title: ts('%1: Settings (External)', {1: cxn.app_meta.title})})" ng-show="cxn.app_meta.links.settings">{{ts('Settings')}}</a>
- <a class="action-item crm-hover-button" ng-click="toggleCxn(cxn)">{{ cxn.is_active=="1" ? ts('Disable') : ts('Enable')}}</a>
- <a class="action-item crm-hover-button" ng-click="openLink(cxn.app_meta, 'logs', {title: ts('%1: Logs (External)', {1: cxn.app_meta.title})})" ng-show="cxn.app_meta.links.logs">{{ts('Logs')}}</a>
- <a class="action-item crm-hover-button" ng-click="openLink(cxn.app_meta, 'docs', {title: ts('%1: Documentation (External)', {1: cxn.app_meta.title})})" ng-show="cxn.app_meta.links.docs">{{ts('Docs')}}</a>
- <a class="action-item crm-hover-button" ng-click="openLink(cxn.app_meta, 'support', {title: ts('%1: Support (External)', {1: cxn.app_meta.title})})" ng-show="cxn.app_meta.links.support">{{ts('Support')}}</a>
- <a class="action-item crm-hover-button"
- crm-confirm='{width: "65%", resizable: true, title: ts("Disconnect"), message: ts("Are you sure you want to disconnect \"%1?\". Doing so may permanently destroy data linkage.", {1: cxn.app_meta.title})}'
- on-yes="unregister(cxn.app_meta)"
- >{{ts('Disconnect')}}</a>
+ <span>
- <!--
- <a class="action-item crm-hover-button" ng-click="toggleCxn(cxn)">{{cxn.is_active ? ts('Disable') : ts('Enable') }}</a>
- -->
+ <a class="action-item crm-hover-button" ng-click="openLink(cxn.app_meta, 'settings', {title: ts('%1: Settings (External)', {1: cxn.app_meta.title})})" ng-show="cxn.app_meta.links.settings">{{ts('Settings')}}</a>
+ <span class="btn-slide crm-hover-button">{{ts('more')}}
+ <ul class="panel" style="display: none;">
+ <li ng-show="cxn.app_meta.links.logs">
+ <a class="action-item crm-hover-button" ng-click="openLink(cxn.app_meta, 'logs', {title: ts('%1: Logs (External)', {1: cxn.app_meta.title})})">
+ {{ts('Logs')}}
+ </a>
+ </li>
+ <li ng-show="cxn.app_meta.links.docs">
+ <a class="action-item crm-hover-button" ng-click="openLink(cxn.app_meta, 'docs', {title: ts('%1: Documentation (External)', {1: cxn.app_meta.title})})">
+ {{ts('Docs')}}
+ </a>
+ </li>
+ <li ng-show="cxn.app_meta.links.support">
+ <a class="action-item crm-hover-button" ng-click="openLink(cxn.app_meta, 'support', {title: ts('%1: Support (External)', {1: cxn.app_meta.title})})">
+ {{ts('Support')}}
+ </a>
+ </li>
++ <li>
++ <a class="action-item crm-hover-button" ng-click="toggleCxn(cxn)">{{ cxn.is_active=="1" ? ts('Disable') : ts('Enable')}}</a>
++ </li>
+ <li>
+ <a class="action-item crm-hover-button"
+ crm-confirm='{width: "65%", resizable: true, title:ts("%1: Reconnect", {1: cxn.app_meta.title}), templateUrl: "~/crmCxn/ConfirmReconnectCtrl.html", export: {cxn: cxn, appMeta: findAppByAppId(cxn.app_guid)}}'
+ on-yes="reregister(cxn.app_meta)"
+ >{{ts('Reconnect')}}</a>
+ </li>
+ <li>
+ <a class="action-item crm-hover-button"
+ crm-confirm='{width: "65%", resizable: true, title: ts("%1: Disconnect", {1: cxn.app_meta.title}), message: ts("Are you sure you want to disconnect \"%1?\". Doing so may permanently destroy data linkage.", {1: cxn.app_meta.title})}'
+ on-yes="unregister(cxn.app_meta)">
+ {{ts('Disconnect')}}
+ </a>
+ </li>
+ </ul>
+ </span>
+
+ </span>
</td>
</tr>
</tbody>
}
/**
- * Creates or modifies a Cxn row
+ *
+ * @param array $params
+ * @return array
+ * @throws Exception
+ */
+function civicrm_api3_cxn_getcfg($params) {
+ $result = array(
+ 'CIVICRM_CXN_CA' => defined('CIVICRM_CXN_CA') ? CIVICRM_CXN_CA : NULL,
+ 'CIVICRM_CXN_VIA' => defined('CIVICRM_CXN_VIA') ? CIVICRM_CXN_VIA : NULL,
+ 'CIVICRM_CXN_APPS_URL' => defined('CIVICRM_CXN_APPS_URL') ? CIVICRM_CXN_APPS_URL : NULL,
+ 'siteCallbackUrl' => CRM_Cxn_BAO_Cxn::getSiteCallbackUrl(),
+ );
+ return civicrm_api3_create_success($result);
+
+ $cxnId = _civicrm_api3_cxn_parseCxnId($params);
+ $appMeta = CRM_Cxn_BAO_Cxn::getAppMeta($cxnId);
+
+ if (empty($params['page']) || !is_string($params['page'])) {
+ throw new API_Exception("Invalid page");
+ }
+
+ /** @var \Civi\Cxn\Rpc\RegistrationClient $client */
+ $client = \Civi\Core\Container::singleton()->get('cxn_reg_client');
+ return $client->call($appMeta, 'Cxn', 'getlink', array(
+ 'page' => $params['page'],
+ ));
+}
++
++/**
++ * Creates or modifies a Cxn row.
+ *
+ * @param array $params
+ * Array with keys:
+ * - id, cxn_guid OR app_guid: string.
+ * - is_active: boolean.
+ * - options: JSON
+ * @return page
+ * @throws Exception
+ */
+ function civicrm_api3_cxn_create($params) {
+ $result = "";
+
+ try {
+ // get the ID
+ if (!empty($params['id'])) {
+ $cxnId = $params['id'];
+ }
+ else {
+ $cxnId = _civicrm_api3_cxn_parseCxnId($params);
+ }
+
+ // see if it's sth to update
+ if (isset($params['options']) || isset($params['is_active'])) {
+
+ $dao = new CRM_Cxn_DAO_Cxn();
+ $dao->id = $cxnId;
+
+ if ($dao->find()) {
+ if (isset($params['is_active'])) {
+ $dao->is_active = (int) $params['is_active'];
+ }
+ if (isset($params['options'])) {
+ $dao->options = $params['options'];
+ }
+
+ $result = $dao->save();
+ }
+
+ }
+ return civicrm_api3_create_success($result, $params, 'Cxn', 'create');
+
+ }
+ catch(Exception $ex){
+ throw $ex;
+ }
+ }