You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/03/19 20:21:15 UTC
[05/55] [abbrv] USERGRID-86: Remove restriction on 10 apps in the
portal
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bf075e6c/portal/js/usergrid-dev.min.js
----------------------------------------------------------------------
diff --git a/portal/js/usergrid-dev.min.js b/portal/js/usergrid-dev.min.js
index fbbf56d..83b8ff6 100644
--- a/portal/js/usergrid-dev.min.js
+++ b/portal/js/usergrid-dev.min.js
@@ -1,4 +1,4 @@
-/*! apigee-usergrid@2.0.34 2014-03-03 */
+/*! apigee-usergrid@2.0.36 2014-03-06 */
(function(exports, global) {
global["true"] = exports;
"use strict";
@@ -42,7 +42,9 @@
AppServices.Controllers = angular.module("appservices.controllers", []);
AppServices.Filters = angular.module("appservices.filters", []);
AppServices.Directives = angular.module("appservices.directives", []);
- angular.module("appservices", [ "ngRoute", "ngResource", "ngSanitize", "ui.bootstrap", "appservices.filters", "appservices.services", "appservices.directives", "appservices.constants", "appservices.controllers" ]).config([ "$routeProvider", "$locationProvider", "$sceDelegateProvider", function($routeProvider, $locationProvider, $sceDelegateProvider) {
+ AppServices.Performance = angular.module("appservices.performance", []);
+ AppServices.Push = angular.module("appservices.push", []);
+ angular.module("appservices", [ "ngRoute", "ngResource", "ngSanitize", "ui.bootstrap", "angulartics", "angulartics.google.analytics", "appservices.filters", "appservices.services", "appservices.directives", "appservices.constants", "appservices.controllers", "appservices.performance", "appservices.push" ]).config([ "$routeProvider", "$locationProvider", "$sceDelegateProvider", "$analyticsProvider", function($routeProvider, $locationProvider, $sceDelegateProvider, $analyticsProvider) {
$routeProvider.when("/org-overview", {
templateUrl: "org-overview/org-overview.html",
controller: "OrgOverviewCtrl"
@@ -76,6 +78,9 @@
}).when("/users/activities", {
templateUrl: "users/users-activities.html",
controller: "UsersActivitiesCtrl"
+ }).when("/users/feed", {
+ templateUrl: "users/users-feed.html",
+ controller: "UsersFeedCtrl"
}).when("/users/graph", {
templateUrl: "users/users-graph.html",
controller: "UsersGraphCtrl"
@@ -141,6 +146,8 @@
});
$locationProvider.html5Mode(false).hashPrefix("!");
$sceDelegateProvider.resourceUrlWhitelist([ "self", "http://apigee-internal-prod.jupiter.apigee.net/**", "http://apigee-internal-prod.mars.apigee.net/**", "https://appservices.apigee.com/**", "https://api.usergrid.com/**" ]);
+ $analyticsProvider.virtualPageviews(false);
+ $analyticsProvider.firstPageview(false);
} ]);
AppServices.Controllers.controller("ActivitiesCtrl", [ "ug", "$scope", "$rootScope", "$location", "$route", function(ug, $scope, $rootScope, $location, $route) {
$scope.$on("app-activities-received", function(evt, data) {
@@ -1194,7 +1201,7 @@
ITEMS_URL: "global/temp.json"
});
"use strict";
- AppServices.Controllers.controller("PageCtrl", [ "ug", "utility", "$scope", "$rootScope", "$location", "$routeParams", "$q", "$route", "$log", function(ug, utility, $scope, $rootScope, $location, $routeParams, $q, $route, $log) {
+ AppServices.Controllers.controller("PageCtrl", [ "ug", "utility", "$scope", "$rootScope", "$location", "$routeParams", "$q", "$route", "$log", "$analytics", function(ug, utility, $scope, $rootScope, $location, $routeParams, $q, $route, $log, $analytics) {
var initScopeVariables = function() {
$scope.loadingText = "Loading...";
$scope.use_sso = false;
@@ -1212,6 +1219,7 @@
$rootScope.demoData = false;
$scope.queryStringApplied = false;
$rootScope.autoUpdateTimer = Usergrid.config ? Usergrid.config.autoUpdateTimer : 61;
+ $rootScope.requiresDeveloperKey = Usergrid.config ? Usergrid.config.client.requiresDeveloperKey : false;
$rootScope.loaded = $rootScope.activeUI = false;
for (var key in Usergrid.regex) {
$scope[key] = Usergrid.regex[key];
@@ -1228,48 +1236,10 @@
};
initScopeVariables();
$rootScope.urls = function() {
- var BASE_URL = "";
- var DATA_URL = "";
- var qs = $location.search();
- switch (true) {
- case $location.host() === "appservices.apigee.com" && location.pathname.indexOf("/dit") >= 0:
- BASE_URL = "https://accounts.jupiter.apigee.net";
- DATA_URL = "http://apigee-internal-prod.jupiter.apigee.net";
- $scope.use_sso = true;
- break;
-
- case $location.host() === "appservices.apigee.com" && location.pathname.indexOf("/mars") >= 0:
- BASE_URL = "https://accounts.mars.apigee.net";
- DATA_URL = "http://apigee-internal-prod.mars.apigee.net";
- $scope.use_sso = true;
- break;
-
- case $location.host() === "appservices.apigee.com":
- DATA_URL = Usergrid.overrideUrl;
- break;
-
- case $location.host() === "apigee.com":
- BASE_URL = "https://accounts.apigee.com";
- DATA_URL = "https://api.usergrid.com";
- $scope.use_sso = true;
- break;
-
- case $location.host() === "usergrid.dev":
- DATA_URL = "https://api.usergrid.com";
- break;
-
- default:
- DATA_URL = Usergrid.overrideUrl;
- break;
- }
- DATA_URL = qs.api_url || DATA_URL;
- $scope.apiUrl = DATA_URL = DATA_URL.lastIndexOf("/") === DATA_URL.length - 1 ? DATA_URL.substring(0, DATA_URL.length - 1) : DATA_URL;
- return {
- DATA_URL: DATA_URL,
- LOGIN_URL: BASE_URL + "/accounts/sign_in",
- PROFILE_URL: BASE_URL + "/accounts/my_account",
- LOGOUT_URL: BASE_URL + "/accounts/sign_out"
- };
+ var urls = ug.getUrls();
+ $scope.apiUrl = urls.apiUrl;
+ $scope.use_sso = urls.use_sso;
+ return urls;
};
$rootScope.gotoPage = function(path) {
$location.path(path);
@@ -1497,12 +1467,19 @@
$scope.$on("request-times-slow", function(evt, averageRequestTimes) {
$rootScope.$broadcast("alert", "info", "We are experiencing performance issues on our server. Please click Get Help for support if this continues.");
});
+ var lastPage = "";
$scope.$on("$routeChangeSuccess", function() {
verifyUser();
$scope.showDemoBar = $location.path().slice(0, "/performance".length) === "/performance";
if (!$scope.showDemoBar) {
$rootScope.demoData = false;
}
+ setTimeout(function() {
+ lastPage = "";
+ }, 50);
+ var path = window.location.pathname.replace("index-debug.html", "");
+ lastPage === "" && $analytics.pageTrack((path + $location.path()).replace("//", "/"));
+ lastPage = $location.path();
});
$scope.$on("applications-received", function(event, applications) {
$scope.applications = applications;
@@ -1538,9 +1515,18 @@
};
} ]);
"use strict";
- AppServices.Services.factory("ug", function(configuration, $rootScope, utility, $q, $http, $resource, $log) {
+ AppServices.Services.factory("ug", function(configuration, $rootScope, utility, $q, $http, $resource, $log, $analytics, $location) {
var requestTimes = [], running = false, currentRequests = {};
- function reportError(data, config) {}
+ function reportError(data, config) {
+ try {
+ $analytics.eventTrack("error", {
+ category: "App Services",
+ label: data + ":" + config.url + ":" + (sessionStorage["apigee_uuid"] || "na")
+ });
+ } catch (e) {
+ console.log(e);
+ }
+ }
var getAccessToken = function() {
return sessionStorage.getItem("accessToken");
};
@@ -1551,6 +1537,54 @@
set: function(prop, value) {
this.client().set(prop, value);
},
+ getUrls: function() {
+ var host = $location.host();
+ var qs = $location.search();
+ var BASE_URL = "";
+ var DATA_URL = "";
+ var use_sso = false;
+ switch (true) {
+ case host === "appservices.apigee.com" && location.pathname.indexOf("/dit") >= 0:
+ BASE_URL = "https://accounts.jupiter.apigee.net";
+ DATA_URL = "http://apigee-internal-prod.jupiter.apigee.net";
+ use_sso = true;
+ break;
+
+ case host === "appservices.apigee.com" && location.pathname.indexOf("/mars") >= 0:
+ BASE_URL = "https://accounts.mars.apigee.net";
+ DATA_URL = "http://apigee-internal-prod.mars.apigee.net";
+ use_sso = true;
+ break;
+
+ case host === "appservices.apigee.com":
+ DATA_URL = Usergrid.overrideUrl;
+ break;
+
+ case host === "apigee.com":
+ BASE_URL = "https://accounts.apigee.com";
+ DATA_URL = "https://api.usergrid.com";
+ use_sso = true;
+ break;
+
+ case host === "usergrid.dev":
+ DATA_URL = "https://api.usergrid.com";
+ break;
+
+ default:
+ DATA_URL = Usergrid.overrideUrl;
+ break;
+ }
+ DATA_URL = qs.api_url || DATA_URL;
+ DATA_URL = DATA_URL.lastIndexOf("/") === DATA_URL.length - 1 ? DATA_URL.substring(0, DATA_URL.length - 1) : DATA_URL;
+ return {
+ DATA_URL: DATA_URL,
+ LOGIN_URL: BASE_URL + "/accounts/sign_in",
+ PROFILE_URL: BASE_URL + "/accounts/my_account",
+ LOGOUT_URL: BASE_URL + "/accounts/sign_out",
+ apiUrl: DATA_URL,
+ use_sso: use_sso
+ };
+ },
orgLogin: function(username, password) {
var self = this;
this.client().set("email", username);
@@ -1579,7 +1613,6 @@
for (key in $rootScope.applications) {
if ($rootScope.applications.hasOwnProperty(key)) size++;
}
- $rootScope.addApplications = size < 10;
$rootScope.$broadcast("checkAuthentication-success", client.getObject("organizations"), client.getObject("applications"), client.get("orgName"), client.get("appName"), client.get("email"));
});
}, isAuthenticated = function() {
@@ -1657,6 +1690,9 @@
this._client = this._client || new Usergrid.Client(options, $rootScope.urls().DATA_URL);
return this._client;
},
+ setClientProperty: function(key, value) {
+ this.client().set(key, value);
+ },
getTopCollections: function() {
var options = {
method: "GET",
@@ -1953,7 +1989,9 @@
getIndexes: function(path) {
var options = {
method: "GET",
- endpoint: path + "/indexes"
+ endpoint: path.split("/").concat("indexes").filter(function(bit) {
+ return bit && bit.length;
+ }).join("/")
};
this.client().request(options, function(err, data) {
if (err) {
@@ -2419,8 +2457,9 @@
$rootScope.$broadcast("app-activities-received", data.entities);
});
},
- getEntityActivities: function(entity) {
- var endpoint = entity.get("type") + "/" + entity.get("uuid") + "/activities";
+ getEntityActivities: function(entity, isFeed) {
+ var route = isFeed ? "feed" : "activities";
+ var endpoint = entity.get("type") + "/" + entity.get("uuid") + "/" + route;
var options = {
method: "GET",
endpoint: endpoint,
@@ -2430,12 +2469,12 @@
};
this.client().request(options, function(err, data) {
if (err) {
- $rootScope.$broadcast(entity.get("type") + "-activities-error", data);
+ $rootScope.$broadcast(entity.get("type") + "-" + route + "-error", data);
}
data.entities.forEach(function(entityInstance) {
entityInstance.createdDate = new Date(entityInstance.created).toUTCString();
});
- $rootScope.$broadcast(entity.get("type") + "-activities-received", data.entities);
+ $rootScope.$broadcast(entity.get("type") + "-" + route + "-received", data.entities);
});
},
addUserActivity: function(user, content) {
@@ -3172,6 +3211,7 @@
$scope.loading = false;
$scope.login = {};
$scope.activation = {};
+ $scope.requiresDeveloperKey = $scope.options.client.requiresDeveloperKey || false;
$rootScope.gotoForgotPasswordPage = function() {
$location.path("/forgot-password");
};
@@ -3192,8 +3232,9 @@
});
$scope.logout = function() {
ug.logout();
+ ug.setClientProperty("developerkey", null);
if ($scope.use_sso) {
- window.location = $rootScope.urls().LOGOUT_URL + "?callback=" + encodeURIComponent($location.absUrl().split("?")[0]);
+ window.location = $rootScope.urls().LOGOUT_URL + "?redirect=no&callback=" + encodeURIComponent($location.absUrl().split("?")[0]);
} else {
$location.path("/login");
$scope.applyScope();
@@ -3208,6 +3249,9 @@
});
$scope.$on("loginSuccesful", function(event, user, organizations, applications) {
$scope.loading = false;
+ if ($scope.requiresDeveloperKey) {
+ ug.setClientProperty("developerkey", $scope.login.developerkey);
+ }
$scope.login = {};
if ($rootScope.currentPath === "/login" || $rootScope.currentPath === "/login/loading" || typeof $rootScope.currentPath === "undefined") {
$location.path("/org-overview");
@@ -3488,7 +3532,6 @@
for (key in applications) {
if (applications.hasOwnProperty(key)) size++;
}
- scope.addApplications = size < 10;
scope.hasApplications = Object.keys(applications).length > 0;
if (!scope.myApp.currentApp) {
$rootScope.currentApp = scope.myApp.currentApp = ug.get("appName");
@@ -4333,7 +4376,7 @@
$templateCache.put("dialogs/modal.html", ' <div class="modal show fade" tabindex="-1" role="dialog" aria-hidden="true">\n' + ' <form ng-submit="extraDelegate(extrabutton)" name="dialogForm" novalidate>\n' + "\n" + ' <div class="modal-header">\n' + ' <h1 class="title">{{title}}</h1>\n' + " </div>\n" + "\n" + ' <div class="modal-body" ng-transclude></div>\n' + ' <div class="modal-footer">\n' + " {{footertext}}\n" + ' <input type="submit" class="btn" id="dialogButton-{{buttonId}}" ng-if="extrabutton" ng-disabled="!dialogForm.$valid" aria-hidden="true" ng-value="extrabuttonlabel"/>\n' + ' <button class="btn cancel pull-left" data-dismiss="modal" aria-hidden="true"\n' + ' ng-click="closeDelegate(close)">{{closelabel}}\n' + " </button>\n" + " </div>\n" + " </form> </div>\n");
$templateCache.put("global/appswitcher-template.html", '<li id="globalNav" class="dropdown dropdownContainingSubmenu active">\n' + ' <a class="dropdown-toggle" data-toggle="dropdown">API Platform<b class="caret"></b></a>\n' + ' <ul class="dropdown-menu pull-right">\n' + ' <li id="globalNavSubmenuContainer">\n' + " <ul>\n" + ' <li data-globalNavDetail="globalNavDetailApigeeHome"><a target="_blank" href="http://apigee.com">Apigee Home</a></li>\n' + ' <li data-globalNavDetail="globalNavDetailAppServices" class="active"><a target="_blank" href="https://apigee.com/usergrid/">App Services</a></li>\n' + ' <li data-globalNavDetail="globalNavDetailApiPlatform" ><a target="_blank" href="https://enterprise.apigee.com">API Platform</a></li>\n' + ' <li data-globalNavDetail="globalNavDetailApiConsoles"><a target="_blank" href="http://apigee.com/providers">API Consoles</a></li>\n' + " </ul>\n" + " </li>\n" + ' <li id="globalNavDetail">\n' +
' <div id="globalNavDetailApigeeHome">\n' + ' <div class="globalNavDetailApigeeLogo"></div>\n' + ' <div class="globalNavDetailDescription">You need apps and apps need APIs. Apigee is the leading API platform for enterprises and developers.</div>\n' + " </div>\n" + ' <div id="globalNavDetailAppServices">\n' + ' <div class="globalNavDetailSubtitle">For App Developers</div>\n' + ' <div class="globalNavDetailTitle">App Services</div>\n' + ' <div class="globalNavDetailDescription">Build engaging applications, store data, manage application users, and more.</div>\n' + " </div>\n" + ' <div id="globalNavDetailApiPlatform">\n' + ' <div class="globalNavDetailSubtitle">For API Developers</div>\n' + ' <div class="globalNavDetailTitle">API Platform</div>\n' + ' <div class="globalNavDetailDescription">Create, configure, manage and analyze your APIs and resources.</div>\n' + " </div>\n" + ' <div id="globalNa
vDetailApiConsoles">\n' + ' <div class="globalNavDetailSubtitle">For API Developers</div>\n' + ' <div class="globalNavDetailTitle">API Consoles</div>\n' + ' <div class="globalNavDetailDescription">Explore over 100 APIs with the Apigee API Console, or create and embed your own API Console.</div>\n' + " </div>\n" + " </li>\n" + " </ul>\n" + "</li>");
$templateCache.put("global/insecure-banner.html", '<div ng-if="securityWarning" ng-cloak class="demo-holder">\n' + ' <div class="alert alert-demo alert-animate">\n' + ' <div class="alert-text">\n' + ' <i class="pictogram">⚠</i>Warning: This application has "sandbox" permissions and is not production ready. <a target="_blank" href="http://apigee.com/docs/app-services/content/securing-your-app">Please go to our security documentation to find out more.</a></span>\n' + " </div>\n" + " </div>\n" + "</div>");
- $templateCache.put("global/page-title.html", '<section class="row-fluid">\n' + ' <div class="span12">\n' + ' <div class="page-filters">\n' + ' <h1 class="title pull-left" id="pageTitle"><i class="pictogram title" style="padding-right: 5px;">{{icon}}</i>{{title}} <a class="super-help" href="#" ng-click="showHelp()" >(need help?)</a></h1>\n' + " </div>\n" + " </div>\n" + ' <bsmodal id="need-help"\n' + ' title="Need Help?"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="sendHelp"\n' + ' extrabuttonlabel="Get Help"\n' + " ng-cloak>\n" + " <p>Do you want to contact support? Support will get in touch with you as soon as possible.</p>\n" + " </bsmodal>\n" + "</section>\n" + "\n");
+ $templateCache.put("global/page-title.html", '<section class="row-fluid">\n' + ' <div class="span12">\n' + ' <div class="page-filters">\n' + ' <h1 class="title pull-left" id="pageTitle"><i class="pictogram title" style="padding-right: 5px;">{{icon}}</i>{{title}} <a class="super-help" href="http://community.apigee.com/content/apigee-customer-support" target="_blank" >(need help?)</a></h1>\n' + " </div>\n" + " </div>\n" + ' <bsmodal id="need-help"\n' + ' title="Need Help?"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="sendHelp"\n' + ' extrabuttonlabel="Get Help"\n' + " ng-cloak>\n" + " <p>Do you want to contact support? Support will get in touch with you as soon as possible.</p>\n" + " </bsmodal>\n" + "</section>\n" + "\n");
$templateCache.put("groups/groups-activities.html", '<div class="content-page" ng-controller="GroupsActivitiesCtrl">\n' + "\n" + " <br>\n" + " <div>\n" + ' <table class="table table-striped">\n' + " <tbody>\n" + ' <tr class="table-header">\n' + " <td>Date</td>\n" + " <td>Content</td>\n" + " <td>Verb</td>\n" + " <td>UUID</td>\n" + " </tr>\n" + ' <tr class="zebraRows" ng-repeat="activity in selectedGroup.activities">\n' + " <td>{{activity.createdDate}}</td>\n" + " <td>{{activity.content}}</td>\n" + " <td>{{activity.verb}}</td>\n" + " <td>{{activity.uuid}}</td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + "\n" + "\n" + "</div>");
$templateCache.put("groups/groups-details.html", '<div class="content-page" ng-controller="GroupsDetailsCtrl">\n' + "\n" + " <div>\n" + ' <form name="updateGroupDetailForm" ng-submit="saveSelectedGroup()" novalidate>\n' + ' <div style="float: left; padding-right: 30px;">\n' + ' <h4 class="ui-dform-legend">Group Information</h4>\n' + ' <label for="group-title" class="ui-dform-label">Group Title</label>\n' + ' <input type="text" id="group-title" ng-pattern="titleRegex" ng-attr-title="{{titleRegexDescription}}" required class="ui-dform-text" ng-model="group.title" ug-validate>\n' + " <br/>\n" + ' <label for="group-path" class="ui-dform-label">Group Path</label>\n' + ' <input type="text" id="group-path" required ng-attr-title="{{pathRegexDescription}}" placeholder="ex: /mydata" ng-pattern="pathRegex" class="ui-dform-text" ng-model="group.path" ug-validate>\n' + " <br/>\n" + "
</div>\n" + ' <br style="clear:both"/>\n' + "\n" + ' <div style="width:100%;float:left;padding: 20px 0">\n' + ' <input type="submit" value="Save Group" style="margin-right: 15px;" ng-disabled="!updateGroupDetailForm.$valid" class="btn btn-primary" />\n' + " </div>\n" + "\n" + ' <div class="content-container">\n' + " <h4>JSON Group Object</h4>\n" + " <pre>{{json}}</pre>\n" + " </div>\n" + " </form>\n" + " </div>\n" + "\n" + "\n" + "</div>");
$templateCache.put("groups/groups-members.html", '<div class="content-page" ng-controller="GroupsMembersCtrl">\n' + "\n" + "\n" + ' <bsmodal id="removeFromGroup"\n' + ' title="Confirmation"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="removeUsersFromGroupDialog"\n' + ' extrabuttonlabel="Delete"\n' + " ng-cloak>\n" + " <p>Are you sure you want to remove the users from the seleted group(s)?</p>\n" + " </bsmodal>\n" + "\n" + ' <bsmodal id="addGroupToUser"\n' + ' title="Add user to group"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="addGroupToUserDialog"\n' + ' extrabuttonlabel="Add"\n' + " ng-cloak>\n" + ' <div class="btn-group">\n' + ' <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n' + " <span class=\"filter-label\">{{$parent.user != '' ? $parent.user.username
: 'Select a user...'}}</span>\n" + ' <span class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu">\n' + ' <li ng-repeat="user in $parent.usersTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.user = user">{{user.username}}</a></li>\n' + " </ul>\n" + " </div>\n" + " </bsmodal>\n" + "\n" + "\n" + ' <div class="button-strip">\n' + ' <button class="btn btn-primary" ng-click="showModal(\'addGroupToUser\')">Add User to Group</button>\n' + ' <button class="btn btn-primary" ng-disabled="!hasMembers || !valueSelected(groupsCollection.users._list)" ng-click="showModal(\'removeFromGroup\')">Remove User(s) from Group</button>\n' + " </div>\n" + ' <table class="table table-striped">\n' + ' <tr class="table-header">\n' + ' <td style="width: 30px;"><input type="checkbox" ng-show="hasMembers" id="selectAllCheckbox" ng-model="groupMembersSelected" ng-click="selectAllEntities(groupsCollection.users._list,this,\'groupMembers
Selected\')"></td>\n' + ' <td style="width: 50px;"></td>\n' + " <td>Username</td>\n" + " <td>Display Name</td>\n" + " </tr>\n" + ' <tr class="zebraRows" ng-repeat="user in groupsCollection.users._list">\n' + " <td>\n" + " <input\n" + ' type="checkbox"\n' + ' ng-model="user.checked"\n' + " >\n" + " </td>\n" + ' <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n' + " <td>{{user.get('username')}}</td>\n" + " <td>{{user.get('name')}}</td>\n" + " </tr>\n" + " </table>\n" + ' <div style="padding: 10px 5px 10px 5px">\n' + ' <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n' + ' <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n' + " </div>\n" + "</div>");
@@ -4342,12 +4385,12 @@
$templateCache.put("groups/groups.html", '<div class="content-page">\n' + "\n" + ' <page-title title=" Groups" icon="👥"></page-title>\n' + ' <bsmodal id="newGroup"\n' + ' title="New Group"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="newGroupDialog"\n' + ' extrabuttonlabel="Add"\n' + ' ng-model="dialog"\n' + " ng-cloak>\n" + " <fieldset>\n" + ' <div class="control-group">\n' + ' <label for="title">Title</label>\n' + ' <div class="controls">\n' + ' <input type="text" id="title" ng-pattern="titleRegex" ng-attr-title="{{titleRegexDescription}}" required ng-model="newGroup.title"class="input-xlarge" ug-validate/>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="path">Path</label>\n' + ' <div class="controls">\n' + ' <input id="path" type="text" ng-attr-title="{{pathRegexD
escription}}" placeholder="ex: /mydata" ng-pattern="pathRegex" required ng-model="newGroup.path" class="input-xlarge" ug-validate/>\n' + " </div>\n" + " </div>\n" + " </fieldset>\n" + " </bsmodal>\n" + "\n" + ' <bsmodal id="deleteGroup"\n' + ' title="Delete Group"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="deleteGroupsDialog"\n' + ' extrabuttonlabel="Delete"\n' + " ng-cloak>\n" + " <p>Are you sure you want to delete the group(s)?</p>\n" + " </bsmodal>\n" + "\n" + "\n" + ' <section class="row-fluid">\n' + ' <div class="span3 user-col">\n' + "\n" + ' <div class="button-toolbar span12">\n' + ' <a title="Select All" class="btn btn-primary select-all toolbar" ng-show="hasGroups" ng-click="selectAllEntities(groupsCollection._list,this,\'groupBoxesSelected\',true)"> <i class="pictogram">⊟</i></a>\n' + ' <button title="Delete" class="btn btn-primary tool
bar" ng-disabled="!hasGroups || !valueSelected(groupsCollection._list)" ng-click="showModal(\'deleteGroup\')"><i class="pictogram">☕</i></button>\n' + ' <button title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newGroup\')"><i class="pictogram"></i></button>\n' + " </div>\n" + ' <ul class="user-list">\n' + ' <li ng-class="selectedGroup._data.uuid === group._data.uuid ? \'selected\' : \'\'" ng-repeat="group in groupsCollection._list" ng-click="selectGroup(group._data.uuid)">\n' + " <input\n" + ' type="checkbox"\n' + ' ng-value="group._data.uuid"\n' + ' ng-checked="group.checked"\n' + ' ng-model="group.checked"\n' + " >\n" + " <a href=\"javaScript:void(0)\" >{{group.get('title')}}</a>\n" + " <br/>\n" + " <span ng-if=\"group.get('path')\" class=\"label\">Path:</span>/{{group.get('path')}}\n" + " </li>\n" + " </ul>\n" + "\
n" + "\n" + ' <div style="padding: 10px 5px 10px 5px">\n' + ' <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n' + ' <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n' + " </div>\n" + "\n" + " </div>\n" + "\n" + ' <div class="span9 tab-content" ng-show="selectedGroup.get" >\n' + ' <div class="menu-toolbar">\n' + ' <ul class="inline" >\n' + ' <li class="tab" ng-class="currentGroupsPage.route === \'/groups/details\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectGroupPage(\'/groups/details\')"><i class="pictogram"></i>Details</a></li>\n' + ' <li class="tab" ng-class="currentGroupsPage.route === \'/groups/members\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectGroupPage(\'/groups/members\')"><i class="pictogram">👥</i>Users</a
></li>\n' + ' <li class="tab" ng-class="currentGroupsPage.route === \'/groups/activities\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectGroupPage(\'/groups/activities\')"><i class="pictogram"></i>Activities</a></li>\n' + ' <li class="tab" ng-class="currentGroupsPage.route === \'/groups/roles\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectGroupPage(\'/groups/roles\')"><i class="pictogram">🌎</i>Roles & Permissions</a></li>\n' + " </ul>\n" + " </div>\n" + ' <span ng-include="currentGroupsPage.template"></span>\n' + "\n" + " </section>\n" + "</div>\n");
$templateCache.put("login/forgot-password.html", '<div class="login-content" ng-controller="ForgotPasswordCtrl">\n' + ' <iframe class="container" ng-src="{{forgotPWiframeURL}}" id="forgot-password-frame" border="0" style="border:0;width:600px;height:620px;">\n' + ' <p>Email Address: <input id="resetPasswordEmail" name="resetPasswordEmail" /></p>\n' + ' <button class="btn btn-primary" ng-click="">Reset Password</button>\n' + "</div>\n");
$templateCache.put("login/loading.html", "\n" + "\n" + "<h1>Loading...</h1>");
- $templateCache.put("login/login.html", '<div class="login-content">\r' + "\n" + ' <bsmodal id="sendActivationLink"\r' + "\n" + ' title="Resend Activation Link"\r' + "\n" + ' close="hideModal"\r' + "\n" + ' closelabel="Cancel"\r' + "\n" + ' extrabutton="resendActivationLink"\r' + "\n" + ' extrabuttonlabel="Send Activation"\r' + "\n" + " ng-cloak>\r" + "\n" + " <fieldset>\r" + "\n" + ' <p>Email to send to: <input type="email" required ng-model="$parent.activation.id" ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" name="activationId" id="user-activationId" class="input-xlarge"/></p>\r' + "\n" + " </fieldset>\r" + "\n" + " </bsmodal>\r" + "\n" + ' <div class="login-holder">\r' + "\n" + ' <form name="loginForm" id="login-form" ng-submit="login()" class="form-horizontal" novalidate>\r' + "\n" + ' <h1 class="title">Enter your credentials</h1>\r' + "\n" + ' <div class="alert-error" n
g-if="loginMessage">{{loginMessage}}</div>\r' + "\n" + ' <div class="control-group">\r' + "\n" + ' <label class="control-label" for="login-username">Email or Username:</label>\r' + "\n" + ' <div class="controls">\r' + "\n" + ' <input type="text" ng-model="login.username" title="Please add a username or email." class="" id="login-username" required ng-value="login.username" size="20" ug-validate>\r' + "\n" + " </div>\r" + "\n" + " </div>\r" + "\n" + ' <div class="control-group">\r' + "\n" + ' <label class="control-label" for="login-password">Password:</label>\r' + "\n" + ' <div class="controls">\r' + "\n" + ' <input type="password" ng-model="login.password" required id="login-password" class="" ng-value="login.password" size="20" ug-validate>\r' + "\n" + " </div>\r" + "\n" + " </div>\r" + "\n" + ' <div class="form-actions">\r' + "\n" + ' <div class="submit">\r' + "\n" + ' <input type="submit" name="button-login
" id="button-login" ng-disabled="!loginForm.$valid || loading" value="{{loading ? loadingText : \'Log In\'}}" class="btn btn-primary pull-right">\r' + "\n" + " </div>\r" + "\n" + " </div>\r" + "\n" + " </form>\r" + "\n" + " </div>\r" + "\n" + ' <div class="extra-actions">\r' + "\n" + ' <div class="submit">\r' + "\n" + ' <a ng-click="gotoSignUp()" name="button-signUp" id="button-signUp" value="Sign Up"\r' + "\n" + ' class="btn btn-primary pull-left">Register</a>\r' + "\n" + " </div>\r" + "\n" + ' <div class="submit">\r' + "\n" + ' <a ng-click="gotoForgotPasswordPage()" name="button-forgot-password" id="button-forgot-password"\r' + "\n" + ' value="" class="btn btn-primary pull-left">Forgot Password?</a>\r' + "\n" + " </div>\r" + "\n" + ' <a ng-click="showModal(\'sendActivationLink\')" name="button-resend-activation" id="button-resend-activation"\r' + "\n" + ' value="" class="btn btn-primary pull-left">Resend Activation Link<
/a>\r' + "\n" + " </div>\r" + "\n" + "</div>\r" + "\n");
+ $templateCache.put("login/login.html", '<div class="login-content">\r' + "\n" + ' <bsmodal id="sendActivationLink"\r' + "\n" + ' title="Resend Activation Link"\r' + "\n" + ' close="hideModal"\r' + "\n" + ' closelabel="Cancel"\r' + "\n" + ' extrabutton="resendActivationLink"\r' + "\n" + ' extrabuttonlabel="Send Activation"\r' + "\n" + " ng-cloak>\r" + "\n" + " <fieldset>\r" + "\n" + ' <p>Email to send to: <input type="email" required ng-model="$parent.activation.id" ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" name="activationId" id="user-activationId" class="input-xlarge"/></p>\r' + "\n" + " </fieldset>\r" + "\n" + " </bsmodal>\r" + "\n" + ' <div class="login-holder">\r' + "\n" + ' <form name="loginForm" id="login-form" ng-submit="login()" class="form-horizontal" novalidate>\r' + "\n" + ' <h1 class="title">Enter your credentials</h1>\r' + "\n" + ' <div class="alert-error" n
g-if="loginMessage">{{loginMessage}}</div>\r' + "\n" + ' <div class="control-group">\r' + "\n" + ' <label class="control-label" for="login-username">Email or Username:</label>\r' + "\n" + ' <div class="controls">\r' + "\n" + ' <input type="text" ng-model="login.username" title="Please add a username or email." class="" id="login-username" required ng-value="login.username" size="20" ug-validate>\r' + "\n" + " </div>\r" + "\n" + " </div>\r" + "\n" + ' <div class="control-group">\r' + "\n" + ' <label class="control-label" for="login-password">Password:</label>\r' + "\n" + ' <div class="controls">\r' + "\n" + ' <input type="password" ng-model="login.password" required id="login-password" class="" ng-value="login.password" size="20" ug-validate>\r' + "\n" + " </div>\r" + "\n" + " </div>\r" + "\n" + ' <div class="control-group" ng-show="requiresDeveloperKey">\r' + "\n" + ' <label class="control-label" for="login-developer
key">Developer Key:</label>\r' + "\n" + ' <div class="controls">\r' + "\n" + ' <input type="text" ng-model="login.developerkey" id="login-developerkey" class="" ng-value="login.developerkey" size="20" ug-validate>\r' + "\n" + " </div>\r" + "\n" + " </div>\r" + "\n" + ' <div class="form-actions">\r' + "\n" + ' <div class="submit">\r' + "\n" + ' <input type="submit" name="button-login" id="button-login" ng-disabled="!loginForm.$valid || loading" value="{{loading ? loadingText : \'Log In\'}}" class="btn btn-primary pull-right">\r' + "\n" + " </div>\r" + "\n" + " </div>\r" + "\n" + " </form>\r" + "\n" + " </div>\r" + "\n" + ' <div class="extra-actions">\r' + "\n" + ' <div class="submit">\r' + "\n" + ' <a ng-click="gotoSignUp()" name="button-signUp" id="button-signUp" value="Sign Up"\r' + "\n" + ' class="btn btn-primary pull-left">Register</a>\r' + "\n" + " </div>\r" + "\n" + ' <div class="submit">\r' + "\n" + ' <
a ng-click="gotoForgotPasswordPage()" name="button-forgot-password" id="button-forgot-password"\r' + "\n" + ' value="" class="btn btn-primary pull-left">Forgot Password?</a>\r' + "\n" + " </div>\r" + "\n" + ' <a ng-click="showModal(\'sendActivationLink\')" name="button-resend-activation" id="button-resend-activation"\r' + "\n" + ' value="" class="btn btn-primary pull-left">Resend Activation Link</a>\r' + "\n" + " </div>\r" + "\n" + "</div>\r" + "\n");
$templateCache.put("login/logout.html", '<div id="logut">Logging out...</div>');
$templateCache.put("login/register.html", '<div class="signUp-content">\n' + ' <div class="signUp-holder">\n' + ' <form name="signUpform" id="signUp-form" ng-submit="register()" class="form-horizontal" ng-show="!signUpSuccess" novalidate>\n' + ' <h1 class="title">Register</h1>\n' + "\n" + ' <div class="alert" ng-if="loginMessage">{{loginMessage}}</div>\n' + ' <div class="control-group">\n' + ' <label class="control-label" for="register-orgName">Organization:</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="text" ng-model="registeredUser.orgName" id="register-orgName" ng-pattern="appNameRegex" ng-attr-title="{{appNameRegexDescription}}" ug-validate required class="" size="20">\n' + " </div>\n" + " </div>\n" + "\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="register-name">Name:</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="text" ng
-model="registeredUser.name" id="register-name" ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" ug-validate required class="" size="20">\n' + " </div>\n" + " </div>\n" + "\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="register-userName">Username:</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="text" ng-model="registeredUser.userName" id="register-userName" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}" ug-validate required class="" size="20">\n' + " </div>\n" + " </div>\n" + "\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="register-email">Email:</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="email" ng-model="registeredUser.email" id="register-email" ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" required class="" ug-validate size="20">\n' + " <
/div>\n" + " </div>\n" + "\n" + "\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="register-password">Password:</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="password" ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" ug-validate ng-model="registeredUser.password" id="register-password" required class=""\n' + ' size="20">\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="register-confirmPassword">Re-enter Password:</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="password" ng-model="registeredUser.confirmPassword" required id="register-confirmPassword" ug-validate class="" size="20">\n' + " </div>\n" + " </div>\n" + ' <div class="form-actions">\n' + ' <div class="submit">\n' + ' <input type="submit" name="button-login" ng-disab
led="!signUpform.$valid" id="button-login" value="Register"\n' + ' class="btn btn-primary pull-right">\n' + " </div>\n" + ' <div class="submit">\n' + ' <a ng-click="cancel()" type="submit" name="button-cancel" id="button-cancel"\n' + ' class="btn btn-primary pull-right">Cancel</a>\n' + " </div>\n" + " </div>\n" + " </form>\n" + ' <div class="console-section well thingy" ng-show="signUpSuccess">\n' + ' <span class="title">We\'re holding a seat for you!</span>\n' + " <br><br>\n" + "\n" + " <p>Thanks for signing up for a spot on our private beta. We will send you an email as soon as we're ready for\n" + " you!</p>\n" + "\n" + " <p>In the mean time, you can stay up to date with App Services on our <a\n" + ' href="https://groups.google.com/forum/?fromgroups#!forum/usergrid">GoogleGroup</a>.</p>\n' + "\n" + ' <p> <a href="#!/login">Back to login</a></p>\n' + " </div>\n" + " </
div>\n" + "\n" + "</div>\n");
- $templateCache.put("menus/appMenu.html", '<ul id="app-menu" class="nav top-nav span12">\n' + ' <li class="span7">\n' + ' <bsmodal id="newApplication"\n' + ' title="Create New Application"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="newApplicationDialog"\n' + ' extrabuttonlabel="Create"\n' + ' buttonid="app"\n' + " ng-cloak>\n" + ' <div ng-show="!hasApplications" class="modal-instructions" >You have no applications, please create one.</div>\n' + ' <div ng-show="hasCreateApplicationError" class="alert-error">Application already exists!</div>\n' + ' <p>New application name: <input ng-model="$parent.newApp.name" id="app-name-input" ng-pattern="appNameRegex" ng-attr-title="{{appNameRegexDescription}}" type="text" required ug-validate /></p>\n' + " </bsmodal>\n" + ' <div class="btn-group">\n' + ' <a clas
s="btn dropdown-toggle top-selector app-selector" id="current-app-selector" data-toggle="dropdown">\n' + ' <i class="pictogram">⚙</i> {{myApp.currentApp}}\n' + ' <span class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu app-nav">\n' + ' <li name="app-selector" ng-repeat="app in applications">\n' + ' <a id="app-{{app.name}}-link-id" ng-click="appChange(app.name)">{{app.name}}</a>\n' + " </li>\n" + " </ul>\n" + " </div>\n" + " </li>\n" + ' <li class="span5">\n' + ' <a ng-if="activeUI"\n' + ' class="btn btn-create zero-out pull-right"\n' + ' ng-disabled="!addApplications"\n' + " ng-click=\"addApplications ? showModal('newApplication') : ''\"\n" + ' analytics-on="click"\n' + ' analytics-category="App Services"\n' + ' analytics-label="Button"\n' + ' analytics-event="Add New App"\n' + "
>\n" + " <i class=\"pictogram\">{{addApplications ? '⊞' : '❌'}}</i>\n" + " {{!addApplications ? '10 app limit.' : 'Add New App'}}\n" + " </a>\n" + " </li>\n" + "</ul>");
+ $templateCache.put("menus/appMenu.html", '<ul id="app-menu" class="nav top-nav span12">\n' + ' <li class="span7">\n' + ' <bsmodal id="newApplication"\n' + ' title="Create New Application"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="newApplicationDialog"\n' + ' extrabuttonlabel="Create"\n' + ' buttonid="app"\n' + " ng-cloak>\n" + ' <div ng-show="!hasApplications" class="modal-instructions" >You have no applications, please create one.</div>\n' + ' <div ng-show="hasCreateApplicationError" class="alert-error">Application already exists!</div>\n' + ' <p>New application name: <input ng-model="$parent.newApp.name" id="app-name-input" ng-pattern="appNameRegex" ng-attr-title="{{appNameRegexDescription}}" type="text" required ug-validate /></p>\n' + " </bsmodal>\n" + ' <div class="btn-group">\n' + ' <a clas
s="btn dropdown-toggle top-selector app-selector" id="current-app-selector" data-toggle="dropdown">\n' + ' <i class="pictogram">⚙</i> {{myApp.currentApp}}\n' + ' <span class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu app-nav">\n' + ' <li name="app-selector" ng-repeat="app in applications">\n' + ' <a id="app-{{app.name}}-link-id" ng-click="appChange(app.name)">{{app.name}}</a>\n' + " </li>\n" + " </ul>\n" + " </div>\n" + " </li>\n" + ' <li class="span5">\n' + ' <a ng-if="activeUI"\n' + ' class="btn btn-create zero-out pull-right"\n' + " ng-click=\"showModal('newApplication')\"\n" + ' analytics-on="click"\n' + ' analytics-category="App Services"\n' + ' analytics-label="Button"\n' + ' analytics-event="Add New App"\n' + " >\n" + ' <i class="pictogram">⊞</i>\n' + "
Add New App\n" + " </a>\n" + " </li>\n" + "</ul>");
$templateCache.put("menus/orgMenu.html", '<ul class="nav top-nav org-nav">\n' + " <li>\n" + '<div class="btn-group ">\n' + ' <a class="btn dropdown-toggle top-selector org-selector" id="current-org-selector" data-toggle="dropdown">\n' + ' <i class="pictogram">📁</i> {{currentOrg}}<span class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu org-nav">\n' + ' <li name="org-selector" ng-repeat="(k,v) in organizations">\n' + ' <a id="org-{{v.name}}-selector" class="org-overview" ng-click="orgChange(v.name)"> {{v.name}}</a>\n' + " </li>\n" + " </ul>\n" + " </div>\n" + " </li></ul>");
- $templateCache.put("org-overview/org-overview.html", '<div class="org-overview-content" ng-show="activeUI">\n' + "\n" + ' <page-title title=" Org Administration" icon="🕪"></page-title>\n' + "\n" + ' <section class="row-fluid">\n' + "\n" + ' <div class="span6">\n' + "\n" + ' <h2 class="title">Current Organization </h2>\n' + ' <table class="table table-striped">\n' + " <tr>\n" + ' <td id="org-overview-name">{{currentOrganization.name}}</td>\n' + ' <td style="text-align: right">{{currentOrganization.uuid}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + ' <bsmodal id="newApplication"\n' + ' title="Create New Application"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="newApplicationDialog"\n' + ' extrabuttonlabel="Create"\n' + " ng-cloak>\n" + ' <p>New application name: <input ng-model="$parent.newApp.name" ug-validate required type=
"text" ng-pattern="appNameRegex" ng-attr-title="{{appNameRegexDescription}}" /></p>\n' + " </bsmodal>\n" + "\n" + ' <h2 class="title" > Applications\n' + ' <div class="header-button btn-group pull-right">\n' + " <a class=\"btn filter-selector\" style=\"{{applicationsSize === 10 ? 'width:290px':''}}\" ng-disabled=\"!addApplications\" ng-click=\"(addApplications ? showModal('newApplication') : '')\">\n" + " <span class=\"filter-label\">{{!addApplications ? 'You have met your 10 app limit' : 'Add New App'}}</span>\n" + " </a>\n" + " </div>\n" + " </h2>\n" + "\n" + ' <table class="table table-striped">\n' + ' <tr ng-repeat="application in applications">\n' + " <td>{{application.name}}</td>\n" + ' <td style="text-align: right">{{application.uuid}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + ' <bsmodal id="regenerateCredentials"\n' + ' title="Confirmation"\n' + ' close="hideModal"\n' + '
closelabel="Cancel"\n' + ' extrabutton="regenerateCredentialsDialog"\n' + ' extrabuttonlabel="Yes"\n' + " ng-cloak>\n" + " Are you sure you want to regenerate the credentials?\n" + " </bsmodal>\n" + "\n" + ' <h2 class="title" >Organization API Credentials\n' + ' <div class="header-button btn-group pull-right">\n' + ' <a class="btn filter-selector" ng-click="showModal(\'regenerateCredentials\')">\n' + ' <span class="filter-label">Regenerate Org Credentials</span>\n' + " </a>\n" + " </div>\n" + " </h2>\n" + "\n" + ' <table class="table table-striped">\n' + " <tr>\n" + " <td >Client ID</td>\n" + ' <td style="text-align: right" >{{orgAPICredentials.client_id}}</td>\n' + " </tr>\n" + " <tr>\n" + " <td>Client Secret</td>\n" + ' <td style="text-align: right">{{orgAPICredentials.client_secret}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + '
<bsmodal id="newAdministrator"\n' + ' title="Create New Administrator"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="newAdministratorDialog"\n' + ' extrabuttonlabel="Create"\n' + " ng-cloak>\n" + ' <p>New administrator email: <input id="newAdminInput" ug-validate ng-model="$parent.admin.email" pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" required type="email" /></p>\n' + " </bsmodal>\n" + "\n" + ' <h2 class="title" >Organization Administrators\n' + ' <div class="header-button btn-group pull-right">\n' + ' <a class="btn filter-selector" ng-click="showModal(\'newAdministrator\')">\n' + ' <span class="filter-label">Add New Administrator</span>\n' + " </a>\n" + " </div>\n" + " </h2>\n" + "\n" + ' <table class="table table-striped">\n' + ' <tr ng-repeat="administrator in orgAdministrators">\n' + ' <td><img style
="width:30px;height:30px;" ng-src="{{administrator.image}}"> {{administrator.name}}</td>\n' + ' <td style="text-align: right">{{administrator.email}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + "\n" + " </div>\n" + "\n" + ' <div class="span6">\n' + "\n" + ' <h2 class="title">Activities </h2>\n' + ' <table class="table table-striped">\n' + ' <tr ng-repeat="activity in activities">\n' + " <td>{{activity.title}}</td>\n" + ' <td style="text-align: right">{{activity.date}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + " </div>\n" + "\n" + "\n" + " </section>\n" + "</div>");
+ $templateCache.put("org-overview/org-overview.html", '<div class="org-overview-content" ng-show="activeUI">\n' + "\n" + ' <page-title title=" Org Administration" icon="🕪"></page-title>\n' + "\n" + ' <section class="row-fluid">\n' + "\n" + ' <div class="span6">\n' + "\n" + ' <h2 class="title">Current Organization </h2>\n' + ' <table class="table table-striped">\n' + " <tr>\n" + ' <td id="org-overview-name">{{currentOrganization.name}}</td>\n' + ' <td style="text-align: right">{{currentOrganization.uuid}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + ' <bsmodal id="newApplication"\n' + ' title="Create New Application"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="newApplicationDialog"\n' + ' extrabuttonlabel="Create"\n' + " ng-cloak>\n" + ' <p>New application name: <input ng-model="$parent.newApp.name" ug-validate required type=
"text" ng-pattern="appNameRegex" ng-attr-title="{{appNameRegexDescription}}" /></p>\n' + " </bsmodal>\n" + "\n" + ' <h2 class="title" > Applications\n' + ' <div class="header-button btn-group pull-right">\n' + " <a class=\"btn filter-selector\" style=\"{{applicationsSize === 10 ? 'width:290px':''}}\" ng-click=\"showModal('newApplication')\">\n" + ' <span class="filter-label">Add New App</span>\n' + " </a>\n" + " </div>\n" + " </h2>\n" + "\n" + ' <table class="table table-striped">\n' + ' <tr ng-repeat="application in applications">\n' + " <td>{{application.name}}</td>\n" + ' <td style="text-align: right">{{application.uuid}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + ' <bsmodal id="regenerateCredentials"\n' + ' title="Confirmation"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="regenerateCredentialsDialog"\n' + ' extrabut
tonlabel="Yes"\n' + " ng-cloak>\n" + " Are you sure you want to regenerate the credentials?\n" + " </bsmodal>\n" + "\n" + ' <h2 class="title" >Organization API Credentials\n' + ' <div class="header-button btn-group pull-right">\n' + ' <a class="btn filter-selector" ng-click="showModal(\'regenerateCredentials\')">\n' + ' <span class="filter-label">Regenerate Org Credentials</span>\n' + " </a>\n" + " </div>\n" + " </h2>\n" + "\n" + ' <table class="table table-striped">\n' + " <tr>\n" + " <td >Client ID</td>\n" + ' <td style="text-align: right" >{{orgAPICredentials.client_id}}</td>\n' + " </tr>\n" + " <tr>\n" + " <td>Client Secret</td>\n" + ' <td style="text-align: right">{{orgAPICredentials.client_secret}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + ' <bsmodal id="newAdministrator"\n' + ' title="Create New Administrator"\n' + ' close="hideModal"
\n' + ' closelabel="Cancel"\n' + ' extrabutton="newAdministratorDialog"\n' + ' extrabuttonlabel="Create"\n' + " ng-cloak>\n" + ' <p>New administrator email: <input id="newAdminInput" ug-validate ng-model="$parent.admin.email" pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" required type="email" /></p>\n' + " </bsmodal>\n" + "\n" + ' <h2 class="title" >Organization Administrators\n' + ' <div class="header-button btn-group pull-right">\n' + ' <a class="btn filter-selector" ng-click="showModal(\'newAdministrator\')">\n' + ' <span class="filter-label">Add New Administrator</span>\n' + " </a>\n" + " </div>\n" + " </h2>\n" + "\n" + ' <table class="table table-striped">\n' + ' <tr ng-repeat="administrator in orgAdministrators">\n' + ' <td><img style="width:30px;height:30px;" ng-src="{{administrator.image}}"> {{administrator.name}}</td>\n' + ' <td style="text-a
lign: right">{{administrator.email}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + "\n" + " </div>\n" + "\n" + ' <div class="span6">\n' + "\n" + ' <h2 class="title">Activities </h2>\n' + ' <table class="table table-striped">\n' + ' <tr ng-repeat="activity in activities">\n' + " <td>{{activity.title}}</td>\n" + ' <td style="text-align: right">{{activity.date}}</td>\n' + " </tr>\n" + " </table>\n" + "\n" + " </div>\n" + "\n" + "\n" + " </section>\n" + "</div>");
$templateCache.put("profile/account.html", '<page-title title=" Account Settings" icon=""></page-title>\n' + "\n" + '<section class="row-fluid">\n' + ' <div class="span12 tab-content">\n' + ' <div class="menu-toolbar">\n' + ' <ul class="inline">\n' + ' <li class="tab" ng-show="!use_sso" ng-class="currentAccountPage.route === \'/profile/profile\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" id="profile-link" ng-click="selectAccountPage(\'/profile/profile\')"><i class="pictogram"></i>Profile</a></li>\n' + ' <li class="tab" ng-class="currentAccountPage.route === \'/profile/organizations\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" id="account-link" ng-click="selectAccountPage(\'/profile/organizations\')"><i class="pictogram">👥</i>Organizations</a></li>\n' + " </ul>\n" + " </div>\n" + ' <span ng-include="currentAccountPage.template"></span>\n' + " </div>\n" + "</section>");
$templateCache.put("profile/organizations.html", '<div class="content-page" ng-controller="OrgCtrl">\n' + "\n" + "\n" + "\n" + ' <bsmodal id="newOrganization"\n' + ' title="Create New Organization"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="addOrganization"\n' + ' extrabuttonlabel="Create"\n' + " ng-cloak>\n" + " <fieldset>\n" + "\n" + ' <div class="control-group">\n' + ' <label for="new-user-orgname">Organization Name</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="text" required title="Name" ug-validate ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" ng-model="$parent.org.name" name="name" id="new-user-orgname" class="input-xlarge"/>\n' + "\n" + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + "\n" + " </fieldset>\n" + " </bsmodal>\n" + "\n" + "\n" + ' <div class="row-flui
d" >\n' + ' <div class="span3 user-col ">\n' + "\n" + ' <div class="button-toolbar span12">\n' + "\n" + ' <button class="btn btn-primary toolbar" ng-click="showModal(\'newOrganization\')" ng-show="true"><i class="pictogram"></i>\n' + " </button>\n" + " </div>\n" + ' <ul class="user-list">\n' + " <li ng-class=\"selectedOrg.uuid === org.uuid ? 'selected' : ''\"\n" + ' ng-repeat="org in orgs" ng-click=" selectOrganization(org)">\n' + "\n" + ' <a href="javaScript:void(0)">{{org.name}}</a>\n' + " </li>\n" + " </ul>\n" + " </div>\n" + ' <div class="span9">\n' + ' <div class="row-fluid" >\n' + " <h4>Organization Information</h4>\n" + ' <div class="span11" ng-show="selectedOrg">\n' + ' <label class="ui-dform-label">Applications</label>\n' + ' <table class="table table-striped">\n' + ' <tr ng-repeat="app in selectedOrg.app
licationsArray">\n' + " <td> {{app.name}}</td>\n" + ' <td style="text-align: right">{{app.uuid}}</td>\n' + " </tr>\n" + " </table>\n" + " <br/>\n" + ' <label class="ui-dform-label">Users</label>\n' + ' <table class="table table-striped">\n' + ' <tr ng-repeat="user in selectedOrg.usersArray">\n' + " <td> {{user.name}}</td>\n" + ' <td style="text-align: right">{{user.email}}</td>\n' + " </tr>\n" + " </table>\n" + ' <form ng-submit="leaveOrganization(selectedOrg)">\n' + ' <input type="submit" name="button-leave-org" id="button-leave-org" title="Can only leave if organization has more than 1 user." ng-disabled="!doesOrgHaveUsers(selectedOrg)" value="Leave Organization" class="btn btn-primary pull-right">\n' + " </form>\n" + " </div>\n" + " </div>\n" + "\n" + " </div>\n" + "
</div>\n" + "</div>");
$templateCache.put("profile/profile.html", '<div class="content-page" ng-controller="ProfileCtrl">\n' + "\n" + ' <div id="account-panels">\n' + ' <div class="panel-content">\n' + ' <div class="console-section">\n' + ' <div class="console-section-contents">\n' + ' <form name="updateAccountForm" id="update-account-form" ng-submit="saveUserInfo()" class="form-horizontal">\n' + " <fieldset>\n" + ' <div class="control-group">\n' + ' <label id="update-account-id-label" class="control-label" for="update-account-id">UUID</label>\n' + ' <div class="controls">\n' + ' <span id="update-account-id" class="monospace">{{user.uuid}}</span>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="update-account-username">Username </label>\n' + ' <div class="controls">\n' + '
<input type="text" ug-validate name="update-account-username" required ng-pattern="usernameRegex" id="update-account-username" ng-attr-title="{{usernameRegexDescription}}" class="span4" ng-model="user.username" size="20"/>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="update-account-name">Name </label>\n' + ' <div class="controls">\n' + ' <input type="text" ug-validate name="update-account-name" id="update-account-name" ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" class="span4" ng-model="user.name" size="20"/>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="update-account-email"> Email</label>\n' + ' <div class="controls">\n' + ' <input type="email" ug-validate requir
ed name="update-account-email" ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" id="update-account-email" class="span4" ng-model="user.email" size="20"/>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="update-account-picture-img">Picture <br />(from <a href="http://gravatar.com">gravatar.com</a>) </label>\n' + ' <div class="controls">\n' + ' <img id="update-account-picture-img" ng-src="{{user.profileImg}}" width="50" />\n' + " </div>\n" + " </div>\n" + ' <span class="help-block">Leave blank any of the following to keep the current password unchanged</span>\n' + " <br />\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="old-account-password">Old Password</label>\n' + ' <div class="controls">\n' + '
<input type="password" ug-validate name="old-account-password" id="old-account-password" class="span4" ng-model="user.oldPassword" size="20"/>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="update-account-password">New Password</label>\n' + ' <div class="controls">\n' + ' <input type="password" ug-validate name="update-account-password" ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" id="update-account-password" class="span4" ng-model="user.newPassword" size="20"/>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group" style="display:none">\n' + ' <label class="control-label" for="update-account-password-repeat">Confirm New Password</label>\n' + ' <div class="controls">\n' + ' <input type="password" ug-validat
e name="update-account-password-repeat" ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" id="update-account-password-repeat" class="span4" ng-model="user.newPasswordConfirm" size="20"/>\n' + " </div>\n" + " </div>\n" + " </fieldset>\n" + ' <div class="form-actions">\n' + ' <input type="submit" class="btn btn-primary" name="button-update-account" ng-disabled="!updateAccountForm.$valid || loading" id="button-update-account" value="{{loading ? loadingText : \'Update\'}}" class="btn btn-usergrid"/>\n' + " </div>\n" + " </form>\n" + " </div>\n" + " </div>\n" + " </div>\n" + " </div>\n" + "</div>");
@@ -4358,12 +4401,13 @@
$templateCache.put("roles/roles.html", '<div class="content-page">\n' + "\n" + ' <page-title title=" Roles" icon=""></page-title>\n' + "\n" + ' <bsmodal id="newRole"\n' + ' title="New Role"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="newRoleDialog"\n' + ' extrabuttonlabel="Create"\n' + " ng-cloak>\n" + " <fieldset>\n" + ' <div class="control-group">\n' + ' <label for="new-role-roletitle">Title</label>\n' + ' <div class="controls">\n' + ' <input type="text" ng-pattern="titleRegex" ng-attr-title="{{titleRegexDescription}}" required ng-model="$parent.newRole.title" name="roletitle" id="new-role-roletitle" class="input-xlarge" ug-validate/>\n' + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="n
ew-role-rolename">Role Name</label>\n' + ' <div class="controls">\n' + ' <input type="text" required ng-pattern="roleNameRegex" ng-attr-title="{{roleNameRegexDescription}}" ng-model="$parent.newRole.name" name="rolename" id="new-role-rolename" class="input-xlarge" ug-validate/>\n' + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + " </fieldset>\n" + " </bsmodal>\n" + "\n" + ' <bsmodal id="deleteRole"\n' + ' title="Delete Role"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="deleteRoleDialog"\n' + ' extrabuttonlabel="Delete"\n' + " ng-cloak>\n" + " <p>Are you sure you want to delete the role(s)?</p>\n" + " </bsmodal>\n" + "\n" + ' <section class="row-fluid">\n' + ' <div class="span3 user-col">\n' + "\n" + ' <div class="button-toolbar span12">\n' + ' <a title="Select All" class="btn btn-p
rimary select-all toolbar" ng-show="hasRoles" ng-click="selectAllEntities(rolesCollection._list,this,\'rolesSelected\',true)"> <i class="pictogram">⊟</i></a>\n' + ' <button title="Delete" class="btn btn-primary toolbar" ng-disabled="!hasRoles || !valueSelected(rolesCollection._list)" ng-click="showModal(\'deleteRole\')"><i class="pictogram">☕</i></button>\n' + ' <button title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newRole\')"><i class="pictogram"></i></button>\n' + " </div>\n" + "\n" + ' <ul class="user-list">\n' + ' <li ng-class="selectedRole._data.uuid === role._data.uuid ? \'selected\' : \'\'" ng-repeat="role in rolesCollection._list" ng-click="selectRole(role._data.uuid)">\n' + " <input\n" + ' type="checkbox"\n' + " ng-value=\"role.get('uuid')\"\n" + ' ng-checked="master"\n' + ' ng-model="role.checked"\n' + " >\n" + " <a >{{r
ole.get('title')}}</a>\n" + " <br/>\n" + " <span ng-if=\"role.get('name')\" class=\"label\">Role Name:</span>{{role.get('name')}}\n" + " </li>\n" + " </ul>\n" + "\n" + "\n" + "\n" + ' <div style="padding: 10px 5px 10px 5px">\n' + ' <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n' + ' <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}};float:right;">Next ></button>\n' + " </div>\n" + "\n" + " </div>\n" + "\n" + ' <div class="span9 tab-content" ng-show="hasRoles">\n' + ' <div class="menu-toolbar">\n' + ' <ul class="inline">\n' + ' <li class="tab" ng-class="currentRolesPage.route === \'/roles/settings\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectRolePage(\'/roles/settings\')"><i class="pictogram"></i>Settings</a></li>\n' + ' <li class="tab" ng-class="currentRolesPage.route ==
= \'/roles/users\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectRolePage(\'/roles/users\')"><i class="pictogram">👥</i>Users</a></li>\n' + ' <li class="tab" ng-class="currentRolesPage.route === \'/roles/groups\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectRolePage(\'/roles/groups\')"><i class="pictogram"></i>Groups</a></li>\n' + " </ul>\n" + " </div>\n" + ' <span ng-include="currentRolesPage.template"></span>\n' + " </div>\n" + " </section>\n" + "</div>");
$templateCache.put("shell/shell.html", '<page-title title=" Shell" icon="📱"></page-title>\n' + "\n" + '<section class="row-fluid">\n' + ' <div class="console-section-contents" id="shell-panel">\n' + ' <div id="shell-input-div">\n' + ' <p> Type "help" to view a list of the available commands.</p>\n' + " <hr>\n" + "\n" + ' <form name="shellForm" ng-submit="submitCommand()" >\n' + " <span> >> </span>\n" + ' <input type="text" id="shell-input" ng-model="shell.input" autofocus="autofocus" required\n' + ' ng-form="shellForm">\n' + ' <input style="display: none" type="submit" ng-form="shellForm" value="submit" ng-disabled="!shell.input"/>\n' + " </form>\n" + " </div>\n" + ' <pre id="shell-output" class="prettyprint lang-js" style="overflow-x: auto; height: 400px;" ng-bind-html="shell.output">\n' + "\n" + " </pre>\n" + " </div>\n" + "</section>\n");
$templateCache.put("users/users-activities.html", '<div class="content-page" ng-controller="UsersActivitiesCtrl" >\n' + "\n" + ' <bsmodal id="addActivityToUser"\n' + ' title="Add activity to user"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="addActivityToUserDialog"\n' + ' extrabuttonlabel="Add"\n' + " ng-cloak>\n" + ' <p>Content: <input id="activityMessage" ng-model="$parent.newActivity.activityToAdd" required name="activityMessage" ug-validate /></p>\n' + " </bsmodal>\n" + "\n" + "\n" + " <div ng:include=\"'users/users-tabs.html'\"></div>\n" + " <br>\n" + ' <div class="button-strip">\n' + ' <button class="btn btn-primary" ng-click="showModal(\'addActivityToUser\')">Add activity to user</button>\n' + " </div>\n" + " <div>\n" + ' <table class="table table-striped">\n' + " <tbody>\n" + ' <tr class="table-header">\n' + " <td>Date</td>\n" + " <td>Cont
ent</td>\n" + " <td>Verb</td>\n" + " <td>UUID</td>\n" + " </tr>\n" + ' <tr class="zebraRows" ng-repeat="activity in activities">\n' + " <td>{{activity.createdDate}}</td>\n" + " <td>{{activity.content}}</td>\n" + " <td>{{activity.verb}}</td>\n" + " <td>{{activity.uuid}}</td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + "\n" + "\n" + "</div>\n");
+ $templateCache.put("users/users-feed.html", '<div class="content-page" ng-controller="UsersFeedCtrl" >\n' + "\n" + " <div ng:include=\"'users/users-tabs.html'\"></div>\n" + " <br>\n" + " <div>\n" + ' <table class="table table-striped">\n' + " <tbody>\n" + ' <tr class="table-header">\n' + " <td>Date</td>\n" + " <td>User</td>\n" + " <td>Content</td>\n" + " <td>Verb</td>\n" + " <td>UUID</td>\n" + " </tr>\n" + ' <tr class="zebraRows" ng-repeat="activity in activities">\n' + " <td>{{activity.createdDate}}</td>\n" + " <td>{{activity.actor.displayName}}</td>\n" + " <td>{{activity.content}}</td>\n" + " <td>{{activity.verb}}</td>\n" + " <td>{{activity.uuid}}</td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + "\n" + "\n" + "</div
>\n");
$templateCache.put("users/users-graph.html", '<div class="content-page" ng-controller="UsersGraphCtrl">\n' + "\n" + " <div ng:include=\"'users/users-tabs.html'\"></div>\n" + "\n" + " <div>\n" + "\n" + ' <bsmodal id="followUser"\n' + ' title="Follow User"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="followUserDialog"\n' + ' extrabuttonlabel="Add"\n' + " ng-cloak>\n" + ' <div class="btn-group">\n' + ' <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n' + " <span class=\"filter-label\">{{$parent.user != '' ? $parent.user.username : 'Select a user...'}}</span>\n" + ' <span class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu">\n' + ' <li ng-repeat="user in $parent.usersTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.user = user">{{user.username}}</a></li>\n' + " </ul
>\n" + " </div>\n" + " </bsmodal>\n" + "\n" + "\n" + ' <div class="button-strip">\n' + ' <button class="btn btn-primary" ng-click="showModal(\'followUser\')">Follow User</button>\n' + " </div>\n" + " <br>\n" + " <h4>Following</h4>\n" + ' <table class="table table-striped">\n' + " <tbody>\n" + ' <tr class="table-header">\n' + " <td>Image</td>\n" + " <td>Username</td>\n" + " <td>Email</td>\n" + " <td>UUID</td>\n" + " </tr>\n" + ' <tr class="zebraRows" ng-repeat="user in selectedUser.following">\n' + ' <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n' + " <td>{{user.username}}</td>\n" + " <td>{{user.email}}</td>\n" + " <td>{{user.uuid}}</td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + "\n" + " <h4>Followers</h4>\n" + ' <table class="table table-striped">\n' + " <tbody>\n" + ' <tr class="table-header">\n' + "
<td>Image</td>\n" + " <td>Username</td>\n" + " <td>Email</td>\n" + " <td>UUID</td>\n" + " </tr>\n" + ' <tr class="zebraRows" ng-repeat="user in selectedUser.followers">\n' + ' <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n' + " <td>{{user.username}}</td>\n" + " <td>{{user.email}}</td>\n" + " <td>{{user.uuid}}</td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + "\n" + " </div>\n" + "</div>");
$templateCache.put("users/users-groups.html", '<div class="content-page" ng-controller="UsersGroupsCtrl">\n' + "\n" + " <div ng:include=\"'users/users-tabs.html'\"></div>\n" + "\n" + " <div>\n" + "\n" + ' <bsmodal id="addUserToGroup"\n' + ' title="Add user to group"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="addUserToGroupDialog"\n' + ' extrabuttonlabel="Add"\n' + " ng-cloak>\n" + ' <div class="btn-group">\n' + ' <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n' + " <span class=\"filter-label\">{{$parent.title && $parent.title !== '' ? $parent.title : 'Select a group...'}}</span>\n" + ' <span class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu">\n' + ' <li ng-repeat="group in $parent.groupsTypeaheadValues" class="filterItem"><a ng-click="selectGroup(group)">{{group.title}}</a></li>
\n' + " </ul>\n" + " </div>\n" + " </bsmodal>\n" + "\n" + ' <bsmodal id="leaveGroup"\n' + ' title="Confirmation"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="leaveGroupDialog"\n' + ' extrabuttonlabel="Leave"\n' + " ng-cloak>\n" + " <p>Are you sure you want to remove the user from the seleted group(s)?</p>\n" + " </bsmodal>\n" + "\n" + ' <div class="button-strip">\n' + ' <button class="btn btn-primary" ng-click="showModal(\'addUserToGroup\')">Add to group</button>\n' + ' <button class="btn btn-primary" ng-disabled="!hasGroups || !valueSelected(userGroupsCollection._list)" ng-click="showModal(\'leaveGroup\')">Leave group(s)</button>\n' + " </div>\n" + ' <table class="table table-striped">\n' + " <tbody>\n" + ' <tr class="table-header">\n' + " <td>\n" + ' <input type="checkbox" ng-show="hasGroups" id="selectAllCheckBox
" ng-model="userGroupsSelected" ng-click="selectAllEntities(userGroupsCollection._list,this,\'userGroupsSelected\')" >\n' + " </td>\n" + " <td>Group Name</td>\n" + " <td>Path</td>\n" + " </tr>\n" + ' <tr class="zebraRows" ng-repeat="group in userGroupsCollection._list">\n' + " <td>\n" + " <input\n" + ' type="checkbox"\n' + " ng-value=\"group.get('uuid')\"\n" + ' ng-model="group.checked"\n' + " >\n" + " </td>\n" + " <td>{{group.get('title')}}</td>\n" + " <td>{{group.get('path')}}</td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + ' <div style="padding: 10px 5px 10px 5px">\n' + ' <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n' + ' <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n' + " </div>\n" + "\n"
+ "</div>\n");
$templateCache.put("users/users-profile.html", '<div class="content-page" ng-controller="UsersProfileCtrl">\n' + "\n" + " <div ng:include=\"'users/users-tabs.html'\"></div>\n" + "\n" + ' <div class="row-fluid">\n' + "\n" + ' <form ng-submit="saveSelectedUser()" name="profileForm" novalidate>\n' + ' <div class="span6">\n' + " <h4>User Information</h4>\n" + ' <label for="ui-form-username" class="ui-dform-label">Username</label>\n' + ' <input type="text" ug-validate required name="ui-form-username" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}" id="ui-form-username" class="ui-dform-text" ng-model="user.username">\n' + " <br/>\n" + ' <label for="ui-form-name" class="ui-dform-label">Full Name</label>\n' + ' <input type="text" ug-validate ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" required name="ui-form-name" id="ui-form-name" class="ui-dform-text" ng-model="user.name">\n' + " <br/>\n" + '
<label for="ui-form-title" class="ui-dform-label">Title</label>\n' + ' <input type="text" ug-validate name="ui-form-title" id="ui-form-title" class="ui-dform-text" ng-model="user.title">\n' + " <br/>\n" + ' <label for="ui-form-url" class="ui-dform-label">Home Page</label>\n' + ' <input type="url" ug-validate name="ui-form-url" id="ui-form-url" title="Please enter a valid url." class="ui-dform-text" ng-model="user.url">\n' + " <br/>\n" + ' <label for="ui-form-email" class="ui-dform-label">Email</label>\n' + ' <input type="email" ug-validate required name="ui-form-email" id="ui-form-email" ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" class="ui-dform-text" ng-model="user.email">\n' + " <br/>\n" + ' <label for="ui-form-tel" class="ui-dform-label">Telephone</label>\n' + ' <input type="tel" ug-validate name="ui-form-tel" id="ui-form-tel" class="ui-dform-text" ng-model="user.tel">\n' + " <br/>\n" + ' <label
for="ui-form-picture" class="ui-dform-label">Picture URL</label>\n' + ' <input type="url" ug-validate name="ui-form-picture" id="ui-form-picture" title="Please enter a valid url." ng class="ui-dform-text" ng-model="user.picture">\n' + " <br/>\n" + ' <label for="ui-form-bday" class="ui-dform-label">Birthday</label>\n' + ' <input type="date" ug-validate name="ui-form-bday" id="ui-form-bday" class="ui-dform-text" ng-model="user.bday">\n' + " <br/>\n" + " </div>\n" + ' <div class="span6">\n' + " <h4>Address</h4>\n" + ' <label for="ui-form-addr1" class="ui-dform-label">Street 1</label>\n' + ' <input type="text" ug-validate name="ui-form-addr1" id="ui-form-addr1" class="ui-dform-text" ng-model="user.adr.addr1">\n' + " <br/>\n" + ' <label for="ui-form-addr2" class="ui-dform-label">Street 2</label>\n' + ' <input type="text" ug-validate name="ui-form-addr2" id="ui-form-addr2" class="ui-dform-text" ng-model="user.adr.addr2">\n' + "
<br/>\n" + ' <label for="ui-form-city" class="ui-dform-label">City</label>\n' + ' <input type="text" ug-validate name="ui-form-city" id="ui-form-city" class="ui-dform-text" ng-model="user.adr.city">\n' + " <br/>\n" + ' <label for="ui-form-state" class="ui-dform-label">State</label>\n' + ' <input type="text" ug-validate name="ui-form-state" id="ui-form-state" ng-attr-title="{{stateRegexDescription}}" ng-pattern="stateRegex" class="ui-dform-text" ng-model="user.adr.state">\n' + " <br/>\n" + ' <label for="ui-form-zip" class="ui-dform-label">Zip</label>\n' + ' <input type="text" ug-validate name="ui-form-zip" ng-pattern="zipRegex" ng-attr-title="{{zipRegexDescription}}" id="ui-form-zip" class="ui-dform-text" ng-model="user.adr.zip">\n' + " <br/>\n" + ' <label for="ui-form-country" class="ui-dform-label">Country</label>\n' + ' <input type="text" ug-validate name="ui-form-country" ng-attr-title="{{countryRegexDescription}}" ng-p
attern="countryRegex" id="ui-form-country" class="ui-dform-text" ng-model="user.adr.country">\n' + " <br/>\n" + " </div>\n" + "\n" + ' <div class="span6">\n' + ' <input type="submit" class="btn btn-primary margin-35" ng-disabled="!profileForm.$valid" value="Save User"/>\n' + " </div>\n" + "\n" + "\n" + ' <div class="content-container">\n' + " <legend>JSON User Object</legend>\n" + " <pre>{{user.json}}</pre>\n" + " </div>\n" + " </form>\n" + " </div>\n" + "\n" + "\n" + "</div>\n");
$templateCache.put("users/users-roles.html", '<div class="content-page" ng-controller="UsersRolesCtrl">\n' + "\n" + " <div ng:include=\"'users/users-tabs.html'\"></div>\n" + "\n" + " <div>\n" + "\n" + ' <bsmodal id="addRole"\n' + ' title="Add user to role"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="addUserToRoleDialog"\n' + ' extrabuttonlabel="Add"\n' + " ng-cloak>\n" + ' <div class="btn-group">\n' + ' <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n' + " <span class=\"filter-label\">{{$parent.name != '' ? $parent.name : 'Select a Role...'}}</span>\n" + ' <span class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu">\n' + ' <li ng-repeat="role in $parent.rolesTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.name = role.name">{{role.name}}</a></li>\n' + " </ul>\n
" + " </div>\n" + " </bsmodal>\n" + "\n" + ' <bsmodal id="leaveRole"\n' + ' title="Confirmation"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="leaveRoleDialog"\n' + ' extrabuttonlabel="Leave"\n' + " ng-cloak>\n" + " <p>Are you sure you want to remove the user from the role(s)?</p>\n" + " </bsmodal>\n" + "\n" + '<div ng-controller="UsersRolesCtrl">\n' + "\n" + ' <div class="button-strip">\n' + ' <button class="btn btn-primary" ng-click="showModal(\'addRole\')">Add Role</button>\n' + ' <button class="btn btn-primary" ng-disabled="!hasRoles || !valueSelected(selectedUser.roles)" ng-click="showModal(\'leaveRole\')">Leave role(s)</button>\n' + " </div>\n" + " <br>\n" + " <h4>Roles</h4>\n" + ' <table class="table table-striped">\n' + " <tbody>\n" + ' <tr class="table-header">\n' + ' <td style="width: 30px;"><input type="checkbox" ng
-show="hasRoles" id="rolesSelectAllCheckBox" ng-model="usersRolesSelected" ng-click="selectAllEntities(selectedUser.roles,this,\'usersRolesSelected\',true)" ></td>\n' + " <td>Role Name</td>\n" + " <td>Role title</td>\n" + " </tr>\n" + ' <tr class="zebraRows" ng-repeat="role in selectedUser.roles">\n' + " <td>\n" + " <input\n" + ' type="checkbox"\n' + ' ng-model="role.checked"\n' + " >\n" + " </td>\n" + " <td>{{role.name}}</td>\n" + " <td>{{role.title}}</td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + "\n" + ' <bsmodal id="deletePermission"\n' + ' title="Confirmation"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="deletePermissionDialog"\n' + ' extrabuttonlabel="Delete"\n' + " ng-cloak>\n" + " <p>Are you sure you want to delete the permission(s)?</p>\n" + " </bsmodal
>\n" + "\n" + ' <bsmodal id="addPermission"\n' + ' title="New Permission"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="addUserPermissionDialog"\n' + ' extrabuttonlabel="Add"\n' + " ng-cloak>\n" + ' <p>Path: <input ng-model="$parent.permissions.path" placeholder="ex: /mydata" id="usersRolePermissions" type="text" ng-pattern="pathRegex" required ug-validate ng-attr-title="{{pathRegexDescription}}" /></p>\n' + ' <div class="control-group">\n' + ' <input type="checkbox" ng-model="$parent.permissions.getPerm"> GET\n' + " </div>\n" + ' <div class="control-group">\n' + ' <input type="checkbox" ng-model="$parent.permissions.postPerm"> POST\n' + " </div>\n" + ' <div class="control-group">\n' + ' <input type="checkbox" ng-model="$parent.permissions.putPerm"> PUT\n' + " </div>\n" + ' <div class="control-group">\n' + ' <input t
ype="checkbox" ng-model="$parent.permissions.deletePerm"> DELETE\n' + " </div>\n" + " </bsmodal>\n" + "\n" + ' <div class="button-strip">\n' + ' <button class="btn btn-primary" ng-click="showModal(\'addPermission\')">Add Permission</button>\n' + ' <button class="btn btn-primary" ng-disabled="!hasPermissions || !valueSelected(selectedUser.permissions)" ng-click="showModal(\'deletePermission\')">Delete Permission(s)</button>\n' + " </div>\n" + " <br>\n" + " <h4>Permissions</h4>\n" + ' <table class="table table-striped">\n' + " <tbody>\n" + ' <tr class="table-header">\n' + ' <td style="width: 30px;"><input type="checkbox" ng-show="hasPermissions" id="permissionsSelectAllCheckBox" ng-model="usersPermissionsSelected" ng-click="selectAllEntities(selectedUser.permissions,this,\'usersPermissionsSelected\',true)" ></td>\n' + " <td>Path</td>\n" + " <td>GET</td>\n" + " <td>POST</td>\n" + " <td>PUT</td>\n" + "
<td>DELETE</td>\n" + " </tr>\n" + ' <tr class="zebraRows" ng-repeat="permission in selectedUser.permissions">\n' + " <td>\n" + " <input\n" + ' type="checkbox"\n' + ' ng-model="permission.checked"\n' + " >\n" + " </td>\n" + " <td>{{permission.path}}</td>\n" + " <td>{{permission.operations.get}}</td>\n" + " <td>{{permission.operations.post}}</td>\n" + " <td>{{permission.operations.put}}</td>\n" + " <td>{{permission.operations.delete}}</td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + " </div>\n" + "\n" + "</div>\n");
$templateCache.put("users/users-tabs.html", "\n" + "\n" + "\n");
- $templateCache.put("users/users.html", '<div class="content-page">\n' + "\n" + ' <page-title title=" Users" icon="👤"></page-title>\n' + ' <bsmodal id="newUser"\n' + ' title="Create New User"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' buttonid="users"\n' + ' extrabutton="newUserDialog"\n' + ' extrabuttonlabel="Create"\n' + " ng-cloak>\n" + " <fieldset>\n" + ' <div class="control-group">\n' + ' <label for="new-user-username">Username</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="text" required ng-model="$parent.newUser.newusername" ng-pattern="usernameRegex" ng-attr-title=
<TRUNCATED>