| angular.module('appservices').run(['$templateCache', function($templateCache) { |
| 'use strict'; |
| |
| $templateCache.put('activities/activities.html', |
| "<section class=\"row-fluid\">\n" + |
| " <div class=\"span12\">\n" + |
| " <div class=\"page-filters\">\n" + |
| " <h1 class=\"title\" class=\"pull-left\"><i class=\"pictogram title\">📱</i> Activities</h1>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "\n" + |
| "</section>\n" + |
| "<section class=\"row-fluid\">\n" + |
| " <div class=\"span12 tab-content\">\n" + |
| " <table class=\"table table-striped\">\n" + |
| " <tbody>\n" + |
| " <tr class=\"table-header\">\n" + |
| " <td>Date</td>\n" + |
| " <td></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>{{formatDate(activity.created)}}</td>\n" + |
| " <td class=\"gravatar20\"> <img ng-src=\"{{activity.actor.picture}}\"/>\n" + |
| " </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" + |
| "</section>" |
| ); |
| |
| |
| $templateCache.put('app-overview/app-overview.html', |
| "<div class=\"app-overview-content\" >\n" + |
| " <section class=\"row-fluid\">\n" + |
| "\n" + |
| " <page-title title=\" Summary\" icon=\"📱\"></page-title>\n" + |
| " <section class=\"row-fluid\">\n" + |
| " <h2 class=\"title\" id=\"app-overview-title\">{{currentApp}}</h2>\n" + |
| " </section>\n" + |
| " <section class=\"row-fluid\">\n" + |
| "\n" + |
| " <div class=\"span6\">\n" + |
| " <chart id=\"appOverview\"\n" + |
| " chartdata=\"appOverview.chart\"\n" + |
| " type=\"column\"></chart>\n" + |
| " </div>\n" + |
| "\n" + |
| " <div class=\"span6\">\n" + |
| " <table class=\"table table-striped\">\n" + |
| " <tr class=\"table-header\">\n" + |
| " <td>Path</td>\n" + |
| " <td>Title</td>\n" + |
| " </tr>\n" + |
| " <tr class=\"zebraRows\" ng-repeat=\"(k,v) in collections\">\n" + |
| " <td>{{v.title}}</td>\n" + |
| " <td>{{v.count}}</td>\n" + |
| " </tr>\n" + |
| " </table>\n" + |
| " </div>\n" + |
| "\n" + |
| " </section>\n" + |
| "</div>" |
| ); |
| |
| |
| $templateCache.put('app-overview/doc-includes/android.html', |
| "<h2>1. Integrate the SDK into your project</h2>\n" + |
| "<p>You can integrate Apigee features into your app by including the SDK in your project. You can do one of the following:</p>\n" + |
| "\n" + |
| "<ul class=\"nav nav-tabs\" id=\"myTab\">\n" + |
| "\t<li class=\"active\"><a data-toggle=\"tab\" href=\"#existing_project\">Existing project</a></li>\n" + |
| "\t<li><a data-toggle=\"tab\" href=\"#new_project\">New project</a></li>\n" + |
| "</ul>\n" + |
| "\n" + |
| "<div class=\"tab-content\">\n" + |
| "\t<div class=\"tab-pane active\" id=\"existing_project\">\n" + |
| "\t\t<a class=\"jumplink\" name=\"add_the_sdk_to_an_existing_project\"></a>\n" + |
| "\t\t<p>If you've already got an Android project, you can integrate the Apigee SDK into your project as you normally would:</p>\n" + |
| "\t\t<div id=\"collapse\">\n" + |
| "\t\t\t<a href=\"#jar_collapse\" class=\"btn\" data-toggle=\"collapse\"><i class=\"icon-white icon-chevron-down\"></i> Details</a>\t\t\t\n" + |
| "\t\t</div>\n" + |
| "\t\t<div id=\"jar_collapse\" class=\"collapse\">\n" + |
| "\t\t\t<p>Add <code>apigee-android-<version>.jar</code> to your class path by doing the following:</p>\n" + |
| "\t\n" + |
| "\t\t\t<h3>Android 4.0 (or later) projects</h3>\n" + |
| "\t\t\t<p>Copy the jar file into the <code>/libs</code> folder in your project.</p>\n" + |
| "\t\t\t\n" + |
| "\t\t\t<h3>Android 3.0 (or earlier) projects</h3>\n" + |
| "\t\t\t<ol>\n" + |
| "\t\t\t\t<li>In the Eclipse <strong>Package Explorer</strong>, select your application's project folder.</li>\n" + |
| "\t\t\t\t<li>Click the <strong>File > Properties</strong> menu.</li>\n" + |
| "\t\t\t\t<li>In the <strong>Java Build Path</strong> section, click the <strong>Libraries</strong> tab, click <strong>Add External JARs</strong>.</li>\n" + |
| "\t\t\t\t<li>Browse to <code>apigee-android-<version>.jar</code>, then click <strong>Open</strong>.</li>\n" + |
| "\t\t\t\t<li>Order the <code>apigee-android-<version>.jar</code> at the top of the class path:\n" + |
| "\t\t\t\t\t<ol>\n" + |
| "\t\t\t\t\t\t<li>In the Eclipse <strong>Package Explorer</strong>, select your application's project folder.</li>\n" + |
| "\t\t\t\t\t\t<li>Click the <strong>File > Properties</strong> menu.</li>\n" + |
| "\t\t\t\t\t\t<li>In the properties dialog, in the <strong>Java Build Path</strong> section, click the <strong>Order and Export</strong> tab.</li>\n" + |
| "\t\t\t\t\t\t<li>\n" + |
| "\t\t\t\t\t\t\t<p><strong>IMPORTANT:</strong> Select the checkbox for <code>apigee-android-<version>.jar</code>, then click the <strong>Top</strong> button.</p>\n" + |
| "\t\t\t\t\t\t</li>\n" + |
| "\t\t\t\t\t</ol>\n" + |
| "\t\t\t\t</li>\n" + |
| "\t\t\t</ol>\n" + |
| "\t\t\t<div class=\"warning\">\n" + |
| "\t\t\t\t<h3>Applications using Ant</h3>\n" + |
| "\t\t\t\t<p>If you are using Ant to build your application, you must also copy <code>apigee-android-<version>.jar</code> to the <code>/libs</code> folder in your application.</p>\n" + |
| "\t\t\t</div>\n" + |
| "\t\t</div>\n" + |
| "\t</div>\n" + |
| "\t<div class=\"tab-pane\" id=\"new_project\">\n" + |
| "\t\t<a class=\"jumplink\" name=\"create_a_new_project_based_on_the_SDK\"></a>\n" + |
| "\t\t<p>If you don't have a project yet, you can begin by using the project template included with the SDK. The template includes support for SDK features.</p>\n" + |
| "\t\t<ul>\n" + |
| "\t\t\t<li>Locate the project template in the expanded SDK. It should be at the following location:\n" + |
| "\t\t\t\t<pre><sdk_root>/new-project-template</pre>\n" + |
| "\t\t\t</li>\n" + |
| "\t\t</ul>\n" + |
| "\t</div>\n" + |
| "</div>\n" + |
| "<h2>2. Update permissions in AndroidManifest.xml</h2>\n" + |
| "<p>Add the following Internet permissions to your application's <code>AndroidManifest.xml</code> file if they have not already been added. Note that with the exception of INTERNET, enabling all other permissions are optional.</p>\n" + |
| "<pre>\n" + |
| "<uses-permission android:name=\"android.permission.INTERNET\" />\n" + |
| "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />\n" + |
| "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />\n" + |
| "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />\n" + |
| "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />\n" + |
| "</pre>\n" + |
| "<h2>3. Initialize the SDK</h2>\n" + |
| "<p>To initialize the App Services SDK, you must instantiate the <code>ApigeeClient</code> class. There are multiple ways to handle this step, but we recommend that you do the following:</p>\n" + |
| "<ol>\n" + |
| "\t<li>Subclass the <code>Application</code> class, and add an instance variable for the <code>ApigeeClient</code> to it, along with getter and setter methods.\n" + |
| "\t\t<pre>\n" + |
| "public class YourApplication extends Application\n" + |
| "{\n" + |
| " \n" + |
| " private ApigeeClient apigeeClient;\n" + |
| " \n" + |
| " public YourApplication()\n" + |
| " {\n" + |
| " this.apigeeClient = null;\n" + |
| " }\n" + |
| " \n" + |
| " public ApigeeClient getApigeeClient()\n" + |
| " {\n" + |
| " return this.apigeeClient;\n" + |
| " }\n" + |
| " \n" + |
| " public void setApigeeClient(ApigeeClient apigeeClient)\n" + |
| " {\n" + |
| " this.apigeeClient = apigeeClient;\n" + |
| " }\n" + |
| "}\t\t\t\n" + |
| "\t\t</pre>\n" + |
| "\t</li>\n" + |
| "\t<li>Declare the <code>Application</code> subclass in your <code>AndroidManifest.xml</code>. For example:\n" + |
| "\t\t<pre>\n" + |
| "<application>\n" + |
| " android:allowBackup=\"true\"\n" + |
| " android:icon=\"@drawable/ic_launcher\"\n" + |
| " android:label=\"@string/app_name\"\n" + |
| " android:name=\".YourApplication\"\n" + |
| "\t…\n" + |
| "</application>\t\t\t\n" + |
| "\t\t</pre>\n" + |
| "\t</li>\n" + |
| "\t<li>Instantiate the <code>ApigeeClient</code> class in the <code>onCreate</code> method of your first <code>Activity</code> class:\n" + |
| "\t\t<pre>\n" + |
| "import com.apigee.sdk.ApigeeClient;\n" + |
| "\n" + |
| "@Override\n" + |
| "protected void onCreate(Bundle savedInstanceState) {\n" + |
| " super.onCreate(savedInstanceState);\t\t\n" + |
| "\t\n" + |
| "\tString ORGNAME = \"{{currentOrg}}\";\n" + |
| "\tString APPNAME = \"{{currentApp}}\";\n" + |
| "\t\n" + |
| "\tApigeeClient apigeeClient = new ApigeeClient(ORGNAME,APPNAME,this.getBaseContext());\n" + |
| "\n" + |
| "\t// hold onto the ApigeeClient instance in our application object.\n" + |
| "\tYourApplication yourApp = (YourApplication) getApplication;\n" + |
| "\tyourApp.setApigeeClient(apigeeClient);\t\t\t\n" + |
| "}\n" + |
| "\t\t</pre>\n" + |
| "\t\t<p>This will make the instance of <code>ApigeeClient</code> available to your <code>Application</code> class.</p>\n" + |
| "\t</li>\n" + |
| "</ol>\n" + |
| "<h2>4. Import additional SDK classes</h2>\n" + |
| "<p>The following classes will enable you to call common SDK methods:</p>\n" + |
| "<pre>\n" + |
| "import com.apigee.sdk.data.client.DataClient; //App Services data methods\n" + |
| "import com.apigee.sdk.apm.android.MonitoringClient; //App Monitoring methods\n" + |
| "import com.apigee.sdk.data.client.callbacks.ApiResponseCallback; //API response handling\n" + |
| "import com.apigee.sdk.data.client.response.ApiResponse; //API response object\n" + |
| "</pre>\n" + |
| "\t\t\n" + |
| "<h2>5. Verify SDK installation</h2>\n" + |
| "\n" + |
| "<p>Once initialized, App Services will also automatically instantiate the <code>MonitoringClient</code> class and begin logging usage, crash and error metrics for your app.</p>\n" + |
| "<p><img src=\"img/verify.png\" alt=\"screenshot of data in admin portal\"/></p>\n" + |
| "<p>To verify that the SDK has been properly initialized, run your app, then go to 'Monitoring' > 'App Usage' in the <a href=\"https://www.apigee.com/usergrid\">App Services admin portal</a> to verify that data is being sent.</p>\n" + |
| "<div class=\"warning\">It may take up to two minutes for data to appear in the admin portal after you run your app.</div>\n" + |
| "\n" + |
| "<h2>Installation complete! Try these next steps</h2>\n" + |
| "<ul>\n" + |
| "\t<li>\n" + |
| "\t\t<h3><strong>Call additional SDK methods in your code</strong></h3>\n" + |
| "\t\t<p>The <code>DataClient</code> and <code>MonitoringClient</code> classes are also automatically instantiated for you, and accessible with the following accessors:</p>\n" + |
| "\t\t<ul>\n" + |
| "\t\t\t<li>\n" + |
| "\t\t\t\t<pre>DataClient dataClient = apigeeClient.getDataClient();</pre>\n" + |
| "\t\t\t\t<p>Use this object to access the data methods of the App Services SDK, including those for push notifications, data store, and geolocation.</p>\n" + |
| "\t\t\t</li>\n" + |
| "\t\t\t<li>\n" + |
| "\t\t\t\t<pre>MonitoringClient monitoringClient = apigeeClient.getMonitoringClient();</pre>\n" + |
| "\t\t\t\t<p>Use this object to access the app configuration and monitoring methods of the App Services SDK, including advanced logging, and A/B testing.</p>\n" + |
| "\t\t\t</li>\n" + |
| "\t\t</ul>\n" + |
| "\t</li>\t\n" + |
| "\t<li>\t\n" + |
| "\t\t<h3><strong>Add App Services features to your app</strong></h3>\n" + |
| "\t\t<p>With App Services you can quickly add valuable features to your mobile or web app, including push notifications, a custom data store, geolocation and more. Check out these links to get started with a few of our most popular features:</p>\n" + |
| "\t\t<ul>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/8410\">Push notifications</a></strong>: Send offers, alerts and other messages directly to user devices to dramatically increase engagement. With App Services you can send 10 million push notification per month for free!</li>\n" + |
| "\t\t\t<li><strong>App Monitoring</strong>: When you initialize the App Services SDK, a suite of valuable, <a href=\"http://apigee.com/docs/node/13190\">customizable</a> application monitoring features are automatically enabled that deliver the data you need to fine tune performance, analyze issues, and improve user experience.\n" + |
| "\t\t\t\t<ul>\n" + |
| "\t\t\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/13176\">App Usage Monitoring</a></strong>: Visit the <a href=\"https://apigee.com/usergrid\">App Services admin portal</a> to view usage data for your app, including data on device models, platforms and OS versions running your app.</li>\t\t\t\t\n" + |
| "\t\t\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/12861\">API Performance Monitoring</a></strong>: Network performance is key to a solid user experience. In the <a href=\"https://apigee.com/usergrid\">App Services admin portal</a> you can view key metrics, including response time, number of requests and raw API request logs.</li>\t\n" + |
| "\t\t\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/13177\">Error & Crash Monitoring</a></strong>: Get alerted to any errors or crashes, then view them in the <a href=\"https://apigee.com/usergrid\">App Services admin portal</a>, where you can also analyze raw error and crash logs.</li>\n" + |
| "\t\t\t\t</ul>\t\t\n" + |
| "\t\t\t</li>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/410\">Geolocation</a></strong>: Target users or return result sets based on user location to keep your app highly-relevant.</li>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/10152\">Data storage</a></strong>: Store all your application data on our high-availability infrastructure, and never worry about dealing with a database ever again.</li>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/376\">User management and authentication</a></strong>: Every app needs users. Use App Services to easily implement user registration, as well as OAuth 2.0-compliant login and authentication.</li>\n" + |
| "\t\t</ul>\n" + |
| "\t</li>\n" + |
| "\t<li>\t\n" + |
| "\t\t<h3><strong>Check out the sample apps</strong></h3>\n" + |
| "\t\t<p>The SDK includes samples that illustrate Apigee features. You'll find the samples in the following location in your SDK download:</p>\n" + |
| "\t\t<pre>\n" + |
| "apigee-android-sdk-<version>\n" + |
| "\t...\n" + |
| "\t/samples\n" + |
| "\t\t</pre>\n" + |
| "\t\t<div id=\"collapse\">\n" + |
| "\t\t\t<a href=\"#samples_collapse\" class=\"btn\" data-toggle=\"collapse\"><i class=\"icon-white icon-chevron-down\"></i> Details</a>\n" + |
| "\t\t</div>\n" + |
| "\t\t<div id=\"samples_collapse\" class=\"collapse\">\n" + |
| "\t\t\t<p>The samples include the following:</p>\n" + |
| "\t\t\t<table class=\"table\">\n" + |
| "\t\t\t\t<thead>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<th scope=\"col\">Sample</th>\n" + |
| "\t\t\t\t\t\t<th scope=\"col\">Description</th>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t</thead>\n" + |
| "\t\t\t\t<tbody>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>books</td>\n" + |
| "\t\t\t\t\t\t<td>An app for storing a list of books that shows Apigee database operations such as reading, creating, and deleting.</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>messagee</td>\n" + |
| "\t\t\t\t\t\t<td>An app for sending and receiving messages that shows Apigee database operations (reading, creating).</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>push</td>\n" + |
| "\t\t\t\t\t\t<td>An app that uses the push feature to send notifications to the devices of users who have subscribed for them.</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t</tbody>\n" + |
| "\t\t\t</table>\n" + |
| "\t\t</div>\n" + |
| "\t</li>\n" + |
| "</ul>\n" |
| ); |
| |
| |
| $templateCache.put('app-overview/doc-includes/ios.html', |
| "<h2>1. Integrate ApigeeiOSSDK.framework</h2>\n" + |
| "<a class=\"jumplink\" name=\"add_the_sdk_to_an_existing_project\"></a>\n" + |
| "<ul class=\"nav nav-tabs\" id=\"myTab\">\n" + |
| "\t<li class=\"active\"><a data-toggle=\"tab\" href=\"#existing_project\">Existing project</a></li>\n" + |
| "\t<li><a data-toggle=\"tab\" href=\"#new_project\">New project</a></li>\n" + |
| "</ul>\n" + |
| "<div class=\"tab-content\">\n" + |
| "\t<div class=\"tab-pane active\" id=\"existing_project\">\n" + |
| "\t\t<p>If you've already got an Xcode iOS project, add it into your project as you normally would.</p>\n" + |
| "\t\t<div id=\"collapse\"><a class=\"btn\" data-toggle=\"collapse\" href=\"#framework_collapse\">Details</a></div>\n" + |
| "\t\t<div class=\"collapse\" id=\"framework_collapse\">\n" + |
| "\t\t\t<ol>\n" + |
| "\t\t\t\t<li>\n" + |
| "\t\t\t\t\t<p>Locate the SDK framework file so you can add it to your project. For example, you'll find the file at the following path:</p>\n" + |
| "\t\t\t\t\t<pre>\n" + |
| "<sdk_root>/bin/ApigeeiOSSDK.framework</pre>\n" + |
| "\t\t\t\t</li>\n" + |
| "\t\t\t\t<li>In the <strong>Project Navigator</strong>, click on your project file, and then the <strong>Build Phases</strong> tab. Expand <strong>Link Binary With Libraries</strong>.</li>\n" + |
| "\t\t\t\t<li>Link the Apigee iOS SDK into your project.\n" + |
| "\t\t\t\t\t<ul>\n" + |
| "\t\t\t\t\t\t<li>Drag ApigeeiOSSDK.framework into the Frameworks group created by Xcode.</li>\n" + |
| "\t\t\t\t\t</ul>\n" + |
| "\t\t\t\t\t<p>OR</p>\n" + |
| "\t\t\t\t\t<ol>\n" + |
| "\t\t\t\t\t\t<li>At the bottom of the <strong>Link Binary With Libraries</strong> group, click the <strong>+</strong> button. Then click <strong>Add Other</strong>.</li>\n" + |
| "\t\t\t\t\t\t<li>Navigate to the directory that contains ApigeeiOSSDK.framework, and choose the ApigeeiOSSDK.framework folder.</li>\n" + |
| "\t\t\t\t\t</ol>\n" + |
| "\t\t\t\t</li>\n" + |
| "\t\t\t</ol>\n" + |
| "\t\t</div>\n" + |
| "\t</div>\n" + |
| "\t<div class=\"tab-pane\" id=\"new_project\"><a class=\"jumplink\" name=\"create_a_new_project_based_on_the_SDK\"></a>\n" + |
| "\t\t<p>If you're starting with a clean slate (you don't have a project yet), you can begin by using the project template included with the SDK. The template includes support for SDK features.</p>\n" + |
| "\t\t<ol>\n" + |
| "\t\t\t<li>\n" + |
| "\t\t\t\t<p>Locate the project template in the expanded SDK. It should be at the following location:</p>\n" + |
| "\t\t\t\t<pre>\n" + |
| "<sdk_root>/new-project-template</pre>\n" + |
| "\t\t\t</li>\n" + |
| "\t\t\t<li>In the project template directory, open the project file: Apigee App Services iOS Template.xcodeproj.</li>\n" + |
| "\t\t\t<li>Get acquainted with the template by looking at its readme file.</li>\n" + |
| "\t\t</ol>\n" + |
| "\t</div>\n" + |
| "</div>\n" + |
| "<h2>2. Add required iOS frameworks</h2>\n" + |
| "<p>Ensure that the following iOS frameworks are part of your project. To add them, under the <strong>Link Binary With Libraries</strong> group, click the <strong>+</strong> button, type the name of the framework you want to add, select the framework found by Xcode, then click <strong>Add</strong>.</p>\n" + |
| "<ul>\n" + |
| "\t<li>QuartzCore.framework</li>\n" + |
| "\t<li>CoreLocation.framework</li>\n" + |
| "\t<li>CoreTelephony.framework </li>\n" + |
| "\t<li>Security.framework</li>\n" + |
| "\t<li>SystemConfiguration.framework</li>\n" + |
| "\t<li>UIKit.framework</li>\n" + |
| "</ul>\n" + |
| "<h2>3. Update 'Other Linker Flags'</h2>\n" + |
| "<p>In the <strong>Build Settings</strong> panel, add the following under <strong>Other Linker Flags</strong>:</p>\n" + |
| "<pre>\n" + |
| "-ObjC -all_load</pre>\n" + |
| "<p>Confirm that flags are set for both <strong>DEBUG</strong> and <strong>RELEASE</strong>.</p>\n" + |
| "<h2>4. Initialize the SDK</h2>\n" + |
| "<p>The <em>ApigeeClient</em> class initializes the App Services SDK. To do this you will need your organization name and application name, which are available in the <em>Getting Started</em> tab of the <a href=\"https://www.apigee.com/usergrid/\">App Service admin portal</a>, under <strong>Mobile SDK Keys</strong>.</p>\n" + |
| "<ol>\n" + |
| "\t<li>Import the SDK\n" + |
| "\t\t<p>Add the following to your source code to import the SDK:</p>\n" + |
| "\t\t<pre>\n" + |
| "#import <ApigeeiOSSDK/Apigee.h></pre>\n" + |
| "\t</li>\n" + |
| "\t<li>\n" + |
| "\t\t<p>Declare the following properties in <code>AppDelegate.h</code>:</p>\n" + |
| "\t\t<pre>\n" + |
| "@property (strong, nonatomic) ApigeeClient *apigeeClient; \n" + |
| "@property (strong, nonatomic) ApigeeMonitoringClient *monitoringClient;\n" + |
| "@property (strong, nonatomic) ApigeeDataClient *dataClient;\t\n" + |
| "\t\t</pre>\n" + |
| "\t</li>\n" + |
| "\t<li>\n" + |
| "\t\t<p>Instantiate the <code>ApigeeClient</code> class inside the \u0010<code>didFinishLaunching</code> method of <code>AppDelegate.m</code>:</p>\n" + |
| "\t\t<pre>\n" + |
| "//Replace 'AppDelegate' with the name of your app delegate class to instantiate it\n" + |
| "AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\n" + |
| "\n" + |
| "//Sepcify your App Services organization and application names\n" + |
| "NSString *orgName = @\"{{currentOrg}}\";\n" + |
| "NSString *appName = @\"{{currentApp}}\";\n" + |
| "\n" + |
| "//Instantiate ApigeeClient to initialize the SDK\n" + |
| "appDelegate.apigeeClient = [[ApigeeClient alloc]\n" + |
| " initWithOrganizationId:orgName\n" + |
| " applicationId:appName];\n" + |
| " \n" + |
| "//Retrieve instances of ApigeeClient.monitoringClient and ApigeeClient.dataClient\n" + |
| "self.monitoringClient = [appDelegate.apigeeClient monitoringClient]; \n" + |
| "self.dataClient = [appDelegate.apigeeClient dataClient]; \n" + |
| "\t\t</pre>\n" + |
| "\t</li>\n" + |
| "</ol>\n" + |
| "\n" + |
| "<h2>5. Verify SDK installation</h2>\n" + |
| "\n" + |
| "<p>Once initialized, App Services will also automatically instantiate the <code>ApigeeMonitoringClient</code> class and begin logging usage, crash and error metrics for your app.</p>\n" + |
| "\n" + |
| "<p>To verify that the SDK has been properly initialized, run your app, then go to <strong>'Monitoring' > 'App Usage'</strong> in the <a href=\"https://www.apigee.com/usergrid\">App Services admin portal</a> to verify that data is being sent.</p>\n" + |
| "<p><img src=\"img/verify.png\" alt=\"screenshot of data in admin portal\"/></p>\n" + |
| "<div class=\"warning\">It may take up to two minutes for data to appear in the admin portal after you run your app.</div>\n" + |
| "\n" + |
| "<h2>Installation complete! Try these next steps</h2>\n" + |
| "<ul>\t\n" + |
| "\t<li>\n" + |
| "\t\t<h3><strong>Call additional SDK methods in your code</strong></h3>\n" + |
| "\t\t<p>Create an instance of the AppDelegate class, then use <code>appDelegate.dataClient</code> or <code>appDelegate.monitoringClient</code> to call SDK methods:</p>\n" + |
| "\t\t<div id=\"collapse\"><a class=\"btn\" data-toggle=\"collapse\" href=\"#client_collapse\">Details</a></div>\n" + |
| "\t\t<div class=\"collapse\" id=\"client_collapse\">\n" + |
| "\t\t\t<ul>\n" + |
| "\t\t\t\t<li><code>appDelegate.dataClient</code>: Used to access the data methods of the App Services SDK, including those for push notifications, data store, and geolocation.</li>\n" + |
| "\t\t\t\t<li><code>appDelegate.monitoringClient</code>: Used to access the app configuration and monitoring methods of the App Services SDK, including advanced logging, and A/B testing.</li>\n" + |
| "\t\t\t</ul>\n" + |
| "\t\t\t<h3>Example</h3>\n" + |
| "\t\t\t<p>For example, you could create a new entity with the following:</p>\n" + |
| "\t\t\t<pre>\n" + |
| "AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\n" + |
| "ApigeeClientResponse *response = [appDelegate.dataClient createEntity:entity];\n" + |
| "\t\t\t</pre>\n" + |
| "\t\t</div>\n" + |
| "\n" + |
| "\t</li>\n" + |
| "\t<li>\n" + |
| "\t\t<h3><strong>Add App Services features to your app</strong></h3>\n" + |
| "\t\t<p>With App Services you can quickly add valuable features to your mobile or web app, including push notifications, a custom data store, geolocation and more. Check out these links to get started with a few of our most popular features:</p>\n" + |
| "\t\t<ul>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/8410\">Push notifications</a></strong>: Send offers, alerts and other messages directly to user devices to dramatically increase engagement. With App Services you can send 10 million push notification per month for free!</li>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/410\">Geolocation</a></strong>: Target users or return result sets based on user location to keep your app highly-relevant.</li>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/10152\">Data storage</a></strong>: Store all your application data on our high-availability infrastructure, and never worry about dealing with a database ever again.</li>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/376\">User management and authentication</a></strong>: Every app needs users. Use App Services to easily implement user registration, as well as OAuth 2.0-compliant login and authentication.</li>\n" + |
| "\t\t</ul>\n" + |
| "\t</li>\n" + |
| "\t<li>\n" + |
| "\t\t<h3><strong>Check out the sample apps</strong></h3>\n" + |
| "\t\t<p>The SDK includes samples that illustrate Apigee features. To look at them, open the .xcodeproj file for each in Xcode. To get a sample app running, open its project file, then follow the steps described in the section, <a target=\"_blank\" href=\"http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios\">Add the SDK to an existing project</a>.</p>\n" + |
| "\t\t<p>You'll find the samples in the following location in your SDK download:</p>\n" + |
| "\t\t<pre>\n" + |
| "apigee-ios-sdk-<version>\n" + |
| " ...\n" + |
| " /samples\n" + |
| "\t\t</pre>\n" + |
| "\t\t<div id=\"collapse\"><a class=\"btn\" data-toggle=\"collapse\" href=\"#samples_collapse\">Details</a></div>\n" + |
| "\t\t<div class=\"collapse\" id=\"samples_collapse\">\n" + |
| "\t\t\t<p>The samples include the following:</p>\n" + |
| "\t\t\t<table class=\"table\">\n" + |
| "\t\t\t\t<thead>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<th scope=\"col\">Sample</th>\n" + |
| "\t\t\t\t\t\t<th scope=\"col\">Description</th>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t</thead>\n" + |
| "\t\t\t\t<tbody>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>books</td>\n" + |
| "\t\t\t\t\t\t<td>An app for storing a list of books that shows Apigee database operations such as reading, creating, and deleting.</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>messagee</td>\n" + |
| "\t\t\t\t\t\t<td>An app for sending and receiving messages that shows Apigee database operations (reading, creating).</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>push</td>\n" + |
| "\t\t\t\t\t\t<td>An app that uses the push feature to send notifications to the devices of users who have subscribed for them.</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t</tbody>\n" + |
| "\t\t\t</table>\n" + |
| "\t\t</div>\n" + |
| "\t\t<p> </p>\n" + |
| "\t</li>\n" + |
| "</ul>\n" |
| ); |
| |
| |
| $templateCache.put('app-overview/doc-includes/javascript.html', |
| "<h2>1. Import the SDK into your HTML</h2>\n" + |
| "<p>To enable support for Apigee-related functions in your HTML, you'll need to include <code>apigee.js</code> in your app. To do this, add the following to the <code>head</code> block of your HTML:</p>\n" + |
| "<pre>\n" + |
| "<script type=\"text/javascript\" src=\"path/to/js/sdk/apigee.js\"></script>\n" + |
| "</pre>\n" + |
| "<h2>2. Instantiate Apigee.Client</h2>\n" + |
| "<p>Apigee.Client initializes the App Services SDK, and gives you access to all of the App Services SDK methods.</p>\n" + |
| "<p>You will need to pass a JSON object with the UUID or name for your App Services organization and application when you instantiate it.</p>\n" + |
| "<pre>\n" + |
| "//Apigee account credentials, available in the App Services admin portal \n" + |
| "var client_creds = {\n" + |
| " orgName:'{{currentOrg}}',\n" + |
| " appName:'{{currentApp}}'\n" + |
| " }\n" + |
| "\n" + |
| "//Initializes the SDK. Also instantiates Apigee.MonitoringClient\n" + |
| "var dataClient = new Apigee.Client(client_creds); \n" + |
| "</pre>\n" + |
| "\n" + |
| "<h2>3. Verify SDK installation</h2>\n" + |
| "\n" + |
| "<p>Once initialized, App Services will also automatically instantiate <code>Apigee.MonitoringClient</code> and begin logging usage, crash and error metrics for your app.</p>\n" + |
| "\n" + |
| "<p>To verify that the SDK has been properly initialized, run your app, then go to <strong>'Monitoring' > 'App Usage'</strong> in the <a href=\"https://www.apigee.com/usergrid\">App Services admin portal</a> to verify that data is being sent.</p>\n" + |
| "<p><img src=\"img/verify.png\" alt=\"screenshot of data in admin portal\"/></p>\n" + |
| "<div class=\"warning\">It may take up to two minutes for data to appear in the admin portal after you run your app.</div>\n" + |
| "\n" + |
| "<h2>Installation complete! Try these next steps</h2>\n" + |
| "<ul>\n" + |
| "\t<li>\t\n" + |
| "\t\t<h3><strong>Call additional SDK methods in your code</strong></h3>\n" + |
| "\t\t<p>Use <code>dataClient</code> or <code>dataClient.monitor</code> to call SDK methods:</p>\n" + |
| "\t\t<div id=\"collapse\">\n" + |
| "\t\t\t<a href=\"#client_collapse\" class=\"btn\" data-toggle=\"collapse\"><i class=\"icon-white icon-chevron-down\"></i> Details</a>\n" + |
| "\t\t</div>\n" + |
| "\t\t<div id=\"client_collapse\" class=\"collapse\">\n" + |
| "\t\t\t<ul>\n" + |
| "\t\t\t\t<li><code>dataClient</code>: Used to access the data methods of the App Services SDK, including those for push notifications, data store, and geolocation.</li>\n" + |
| "\t\t\t\t<li><code>dataClient.monitor</code>: Used to access the app configuration and monitoring methods of the App Services SDK, including advanced logging, and A/B testing.</li>\n" + |
| "\t\t\t</ul>\n" + |
| "\t\t</div>\n" + |
| "\t</li>\t\n" + |
| "\t<li>\n" + |
| "\t\t<h3><strong>Add App Services features to your app</strong></h3>\n" + |
| "\t\t<p>With App Services you can quickly add valuable features to your mobile or web app, including push notifications, a custom data store, geolocation and more. Check out these links to get started with a few of our most popular features:</p>\n" + |
| "\t\t<ul>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/8410\">Push notifications</a></strong>: Send offers, alerts and other messages directly to user devices to dramatically increase engagement. With App Services you can send 10 million push notification per month for free!</li>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/410\">Geolocation</a></strong>: Keep your app highly-relevant by targeting users or returning result sets based on user location.</li>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/10152\">Data storage</a></strong>: Store all your application data on our high-availability infrastructure, and never worry about dealing with a database ever again.</li>\n" + |
| "\t\t\t<li><strong><a href=\"http://apigee.com/docs/node/376\">User management and authentication</a></strong>: Every app needs users. Use App Services to easily implement registration, login and OAuth 2.0-compliant authentication.</li>\n" + |
| "\t\t</ul>\n" + |
| "\t</li>\n" + |
| "\t<li>\n" + |
| "\t\t<h3><strong>Check out the sample apps</strong></h3>\n" + |
| "\t\t<p>The SDK includes samples that illustrate Apigee features. To look at them, open the .xcodeproj file for each in Xcode. You'll find the samples in the following location in your SDK download:</p>\n" + |
| "\t\t<pre>\n" + |
| "apigee-javascript-sdk-master\n" + |
| " ...\n" + |
| " /samples\t\t\n" + |
| "\t\t</pre>\n" + |
| "\t\t<div id=\"collapse\">\n" + |
| "\t\t\t<a href=\"#samples_collapse\" class=\"btn\" data-toggle=\"collapse\"><i class=\"icon-white icon-chevron-down\"></i> Details</a>\n" + |
| "\t\t</div>\n" + |
| "\t\t<div id=\"samples_collapse\" class=\"collapse\">\n" + |
| "\t\t\t<p>The samples include the following:</p>\n" + |
| "\t\t\t<table class=\"table\">\n" + |
| "\t\t\t\t<thead>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<th scope=\"col\">Sample</th>\n" + |
| "\t\t\t\t\t\t<th scope=\"col\">Description</th>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t</thead>\n" + |
| "\t\t\t\t<tbody>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>booksSample.html</td>\n" + |
| "\t\t\t\t\t\t<td>An app for storing a list of books that shows Apigee database operations such as reading, creating, and deleting.</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>messagee</td>\n" + |
| "\t\t\t\t\t\t<td>An app for sending and receiving messages that shows Apigee database operations (reading, creating).</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>monitoringSample.html</td>\n" + |
| "\t\t\t\t\t\t<td>Shows basic configuration and initialization of the HTML5 app monitoring functionality. Works in browser, PhoneGap, Appcelerator, and Trigger.io.</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t\t<tr>\n" + |
| "\t\t\t\t\t\t<td>readmeSample.html</td>\n" + |
| "\t\t\t\t\t\t<td>A simple app for reading data from an Apigee database.</td>\n" + |
| "\t\t\t\t\t</tr>\n" + |
| "\t\t\t\t</tbody>\n" + |
| "\t\t\t</table>\n" + |
| "\t\t</div>\t\n" + |
| "\t</li>\t\t\t\t\n" + |
| "</ul>\n" |
| ); |
| |
| |
| $templateCache.put('app-overview/doc-includes/net.html', |
| "" |
| ); |
| |
| |
| $templateCache.put('app-overview/doc-includes/node.html', |
| "" |
| ); |
| |
| |
| $templateCache.put('app-overview/doc-includes/ruby.html', |
| "" |
| ); |
| |
| |
| $templateCache.put('app-overview/getting-started.html', |
| "<div class=\"setup-sdk-content\" >\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" + |
| " <page-title icon=\"🚀\" title=\"Getting Started\"></page-title>\n" + |
| "\n" + |
| " <section class=\"row-fluid\">\n" + |
| "\n" + |
| "\n" + |
| "\n" + |
| "\n" + |
| " <div class=\"span8\">\n" + |
| "\n" + |
| " <h2 class=\"title\">Install the SDK for app {{currentApp}}</h2>\n" + |
| " <p>Click on a platform icon below to view SDK installation instructions for that platform.</p>\n" + |
| " <ul class=\"inline unstyled\">\n" + |
| " <!--<li><a target=\"_blank\" href=\"http://apigee.com/docs/usergrid/content/sdks-and-examples#ios\"><i class=\"sdk-icon-large-ios\"></i></a></li>-->\n" + |
| " <!--<li><a target=\"_blank\" href=\"http://apigee.com/docs/usergrid/content/sdks-and-examples#android\"><i class=\"sdk-icon-large-android\"></i></a></li>-->\n" + |
| " <!--<li><a target=\"_blank\" href=\"http://apigee.com/docs/usergrid/content/sdks-and-examples#javascript\"><i class=\"sdk-icon-large-js\"></i></a></li>-->\n" + |
| "\n" + |
| "\n" + |
| " <li ng-click=\"showSDKDetail('ios')\"\n" + |
| " analytics-on=\"click\"\n" + |
| " analytics-label=\"App Services\"\n" + |
| " analytics-category=\"Getting Started\"\n" + |
| " analytics-event=\"iOS SDK\"><i class=\"sdk-icon-large-ios\"></i></li>\n" + |
| " <li ng-click=\"showSDKDetail('android')\"\n" + |
| " analytics-on=\"click\"\n" + |
| " analytics-label=\"App Services\"\n" + |
| " analytics-category=\"Getting Started\"\n" + |
| " analytics-event=\"Android SDK\"><i class=\"sdk-icon-large-android\"></i></li>\n" + |
| " <li ng-click=\"showSDKDetail('javascript')\"\n" + |
| " analytics-on=\"click\"\n" + |
| " analytics-label=\"App Services\"\n" + |
| " analytics-category=\"Getting Started\"\n" + |
| " analytics-event=\"JS SDK\"><i class=\"sdk-icon-large-js\"></i></li>\n" + |
| " <li><a target=\"_blank\"\n" + |
| " ng-click=\"showSDKDetail('nocontent')\"\n" + |
| " href=\"http://apigee.com/docs/usergrid/content/sdks-and-examples#nodejs\"\n" + |
| " analytics-on=\"click\"\n" + |
| " analytics-label=\"App Services\"\n" + |
| " analytics-category=\"Getting Started\"\n" + |
| " analytics-event=\"Node SDK\"><i class=\"sdk-icon-large-node\"></i></a></li>\n" + |
| " <li><a target=\"_blank\"\n" + |
| " ng-click=\"showSDKDetail('nocontent')\"\n" + |
| " href=\"http://apigee.com/docs/usergrid/content/sdks-and-examples#ruby\"\n" + |
| " analytics-on=\"click\"\n" + |
| " analytics-label=\"App Services\"\n" + |
| " analytics-category=\"Getting Started\"\n" + |
| " analytics-event=\"Ruby SDK\"><i class=\"sdk-icon-large-ruby\"></i></a></li>\n" + |
| " <li><a target=\"_blank\"\n" + |
| " ng-click=\"showSDKDetail('nocontent')\"\n" + |
| " href=\"http://apigee.com/docs/usergrid/content/sdks-and-examples#c\"\n" + |
| " analytics-on=\"click\"\n" + |
| " analytics-label=\"App Services\"\n" + |
| " analytics-category=\"Getting Started\"\n" + |
| " analytics-event=\"DotNet SDK\"><i class=\"sdk-icon-large-net\"></i></a></li>\n" + |
| " </ul>\n" + |
| "\n" + |
| " <section id=\"intro-container\" class=\"row-fluid intro-container\">\n" + |
| "\n" + |
| " <div class=\"sdk-intro\">\n" + |
| " </div>\n" + |
| "\n" + |
| " <div class=\"sdk-intro-content\">\n" + |
| "\n" + |
| " <a class=\"btn normal white pull-right\" ng-href=\"{{sdkLink}}\" target=\"_blank\">\n" + |
| " Download SDK\n" + |
| " </a>\n" + |
| " <a class=\"btn normal white pull-right\" ng-href=\"{{docsLink}}\" target=\"_blank\">\n" + |
| " More Docs\n" + |
| " </a>\n" + |
| " <h3 class=\"title\"><i class=\"pictogram\">📕</i>{{contentTitle}}</h3>\n" + |
| "\n" + |
| " <div ng-include=\"getIncludeURL()\"></div>\n" + |
| " </div>\n" + |
| "\n" + |
| " </section>\n" + |
| " </div>\n" + |
| "\n" + |
| " <div class=\"span4 keys-creds\">\n" + |
| " <h2 class=\"title\">Mobile sdk keys</h2>\n" + |
| " <p>For mobile SDK initialization.</p>\n" + |
| " <dl class=\"app-creds\">\n" + |
| " <dt>Org Name</dt>\n" + |
| " <dd>{{currentOrg}}</dd>\n" + |
| " <dt>App Name</dt>\n" + |
| " <dd>{{currentApp}}</dd>\n" + |
| " </dl>\n" + |
| " <h2 class=\"title\">Server app credentials</h2>\n" + |
| " <p>For authenticating from a server side app (i.e. Ruby, .NET, etc.)</p>\n" + |
| " <dl class=\"app-creds\">\n" + |
| " <dt>Client ID</dt>\n" + |
| " <dd>{{clientID}}</dd>\n" + |
| " <dt>Client Secret</dt>\n" + |
| " <dd>{{clientSecret}}</dd>\n" + |
| " <dt>\n" + |
| " \n" + |
| " </dt>\n" + |
| " <dd> </dd>\n" + |
| "\n" + |
| " <dt>\n" + |
| " <a class=\"btn filter-selector\" ng-click=\"showModal('regenerateCredentials')\">Regenerate</a>\n" + |
| " </dt>\n" + |
| " <dd></dd>\n" + |
| " </dl>\n" + |
| "\n" + |
| " </div>\n" + |
| "\n" + |
| " </section>\n" + |
| "</div>" |
| ); |
| |
| |
| $templateCache.put('data/data.html', |
| "<div class=\"content-page\">\n" + |
| "\n" + |
| " <bsmodal id=\"newCollection\"\n" + |
| " title=\"Create new collection\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"newCollectionDialog\"\n" + |
| " extrabuttonlabel=\"Create\"\n" + |
| " buttonid=\"collection\"\n" + |
| " ng-cloak>\n" + |
| " <fieldset>\n" + |
| " <div class=\"control-group\">\n" + |
| " <label for=\"new-collection-name\">Collection Name:</label>\n" + |
| " <div class=\"controls\">\n" + |
| " <input type=\"text\" ug-validate required ng-pattern=\"collectionNameRegex\" ng-attr-title=\"{{collectionNameRegexDescription}}\" ng-model=\"$parent.newCollection.name\" name=\"collection\" id=\"new-collection-name\" class=\"input-xlarge\"/>\n" + |
| " <p class=\"help-block hide\"></p>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " </fieldset>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| " <div id=\"intro-page\"> \n" + |
| " <page-title title=\" Collections\" icon=\"📾\"></page-title>\n" + |
| " </div>\n" + |
| "\n" + |
| " <section class=\"row-fluid\">\n" + |
| " <div id=\"intro-list\" class=\"span3 user-col\">\n" + |
| " <a class=\"btn btn-primary\" id=\"new-collection-link\" ng-click=\"showModal('newCollection')\">New Collection</a>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data new collection')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_new_collection}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| " <ul class=\"user-list\">\n" + |
| " <li ng-class=\"queryCollection._type === entity.name ? 'selected' : ''\" ng-repeat=\"entity in collectionList\" ng-click=\"loadCollection('/'+entity.name);\">\n" + |
| " <a id=\"collection-{{entity.name}}-link\" href=\"javaScript:void(0)\">/{{entity.name}} </a>\n" + |
| " </li>\n" + |
| " </ul>\n" + |
| "\n" + |
| " </div>\n" + |
| "\n" + |
| " <div class=\"span9 tab-content\">\n" + |
| " <div class=\"content-page\">\n" + |
| " <form id=\"intro-collection-query\" name=\"dataForm\" ng-submit=\"run();\">\n" + |
| " <fieldset>\n" + |
| " <div class=\"control-group\">\n" + |
| " <div class=\"\" data-toggle=\"buttons-radio\">\n" + |
| " <!--a class=\"btn\" id=\"button-query-back\">◀ Back</a-->\n" + |
| " <!--Added disabled class to change the way button looks but their functionality is as usual -->\n" + |
| " <label class=\"control-label\" style=\"display:none\"><strong>Method</strong> <a id=\"query-method-help\" href=\"#\" class=\"help-link\">get help</a></label>\n" + |
| " <input type=\"radio\" id=\"create-rb\" name=\"query-action\" style=\"margin-top: -2px;\" ng-click=\"selectPOST();\" ng-checked=\"verb=='POST'\"> CREATE \n" + |
| " <input type=\"radio\" id=\"read-rb\" name=\"query-action\" style=\"margin-top: -2px;\" ng-click=\"selectGET();\" ng-checked=\"verb=='GET'\"> READ \n" + |
| " <input type=\"radio\" id=\"update-rb\" name=\"query-action\" style=\"margin-top: -2px;\" ng-click=\"selectPUT();\" ng-checked=\"verb=='PUT'\"> UPDATE \n" + |
| " <input type=\"radio\" id=\"delete-rb\" name=\"query-action\" style=\"margin-top: -2px;\" ng-click=\"selectDELETE();\" ng-checked=\"verb=='DELETE'\"> DELETE <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data query verbs')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_verb_buttons}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "\n" + |
| " <div class=\"control-group\">\n" + |
| " <strong>Path </strong>\n" + |
| " <div class=\"controls\">\n" + |
| " <input ng-model=\"data.queryPath\" type=\"text\" ug-validate id=\"pathDataQuery\" ng-attr-title=\"{{pathRegexDescription}}\" ng-pattern=\"pathRegex\" class=\"span6\" autocomplete=\"off\" placeholder=\"ex: /users\" required/>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data query path')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_path_box}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " <div class=\"control-group\">\n" + |
| " <a id=\"back-to-collection\" class=\"outside-link\" style=\"display:none\">Back to collection</a>\n" + |
| " </div>\n" + |
| " <div class=\"control-group\">\n" + |
| " <strong>Query</strong>\n" + |
| " <div class=\"controls\">\n" + |
| " <input ng-model=\"data.searchString\" type=\"text\" class=\"span6\" autocomplete=\"off\" placeholder=\"ex: select * where name='fred'\"/>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data query string')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_query_box}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| " <div style=\"display:none\">\n" + |
| " <a class=\"btn dropdown-toggle \" data-toggle=\"dropdown\">\n" + |
| " <span id=\"query-collections-caret\" class=\"caret\"></span>\n" + |
| " </a>\n" + |
| " <ul id=\"query-collections-indexes-list\" class=\"dropdown-menu \">\n" + |
| " </ul>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "\n" + |
| "\n" + |
| " <div class=\"control-group\" ng-show=\"verb=='GET' || verb=='DELETE'\">\n" + |
| " <label class=\"control-label\" for=\"query-limit\"><strong>Limit</strong>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data limit')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_limit}}\" tooltip-placement=\"right\">(?)</a><a id=\"query-limit-help\" href=\"#\" ng-show=\"false\" class=\"help-link\">get help</a></label>\n" + |
| " <div class=\"controls\">\n" + |
| " <div class=\"input-append\">\n" + |
| " <input ng-model=\"data.queryLimit\" type=\"text\" class=\"span5\" id=\"query-limit\" placeholder=\"ex: 10\">\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "\n" + |
| " <div class=\"control-group\" style=\"display:{{queryBodyDisplay}}\">\n" + |
| " <label class=\"control-label\" for=\"query-source\"><strong>JSON Body</strong>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data json body')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_json_body}}\" tooltip-placement=\"right\">(?)</a> <a id=\"query-json-help\" href=\"#\" ng-show=\"false\" class=\"help-link\">get help</a></label>\n" + |
| " <div class=\"controls\">\n" + |
| " <textarea ng-model=\"data.queryBody\" id=\"query-source\" class=\"span6 pull-left\" rows=\"4\">\n" + |
| " { \"name\":\"value\" }\n" + |
| " </textarea>\n" + |
| " <br>\n" + |
| " <a class=\"btn pull-left\" ng-click=\"validateJson();\">Validate JSON</a>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data validate json')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_json_validate}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " <div style=\"clear: both; height: 10px;\"></div>\n" + |
| " <div class=\"control-group\">\n" + |
| " <input type=\"submit\" ng-disabled=\"!dataForm.$valid || loading\" class=\"btn btn-primary\" id=\"button-query\" value=\"{{loading ? loadingText : 'Run Query'}}\"/>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data run query')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_run_query}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| " </div>\n" + |
| " </fieldset>\n" + |
| " </form>\n" + |
| " <div id=\"intro-entity-list\">\n" + |
| " <div ng-include=\"display=='generic' ? 'data/display-generic.html' : ''\"></div>\n" + |
| " <div ng-include=\"display=='users' ? 'data/display-users.html' : ''\"></div>\n" + |
| " <div ng-include=\"display=='groups' ? 'data/display-groups.html' : ''\"></div>\n" + |
| " <div ng-include=\"display=='roles' ? 'data/display-roles.html' : ''\"></div>\n" + |
| " </div>\n" + |
| "\n" + |
| " </div>\n" + |
| "\n" + |
| " </div>\n" + |
| " </section>\n" + |
| "\n" + |
| "</div>\n" + |
| "\n" |
| ); |
| |
| |
| $templateCache.put('data/display-generic.html', |
| "\n" + |
| "\n" + |
| "<bsmodal id=\"deleteEntities\"\n" + |
| " title=\"Are you sure you want to delete the entities(s)?\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"deleteEntitiesDialog\"\n" + |
| " extrabuttonlabel=\"Delete\"\n" + |
| " buttonid=\"del-entity\"\n" + |
| " ng-cloak>\n" + |
| " <fieldset>\n" + |
| " <div class=\"control-group\">\n" + |
| " </div>\n" + |
| " </fieldset>\n" + |
| "</bsmodal>\n" + |
| "\n" + |
| "<span class=\"button-strip\">\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data entities list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_entities_list}}\" tooltip-placement=\"left\">(?)</a>\n" + |
| " <button class=\"btn btn-primary\" ng-disabled=\"!valueSelected(queryCollection._list) || deleteLoading\" ng-click=\"deleteEntitiesDialog()\">{{deleteLoading ? loadingText : 'Delete Entity(s)'}}</button>\n" + |
| "</span>\n" + |
| "<table class=\"table table-striped collection-list\">\n" + |
| " <thead>\n" + |
| " <tr class=\"table-header\">\n" + |
| " <th><input type=\"checkbox\" ng-show=\"queryCollection._list.length > 0\" id=\"selectAllCheckbox\" ng-model=\"queryBoxesSelected\" ng-click=\"selectAllEntities(queryCollection._list,$parent,'queryBoxesSelected',true)\"></th>\n" + |
| " <th ng-if=\"hasProperty('name')\">Name</th>\n" + |
| " <th>UUID</th>\n" + |
| " <th></th>\n" + |
| " </tr>\n" + |
| " </thead>\n" + |
| " <tbody ng-repeat=\"entity in queryCollection._list\">\n" + |
| " <tr class=\"zebraRows\" >\n" + |
| " <td>\n" + |
| " <input\n" + |
| " type=\"checkbox\"\n" + |
| " id=\"entity-{{entity._data.name}}-cb\"\n" + |
| " ng-value=\"entity._data.uuid\"\n" + |
| " ng-model=\"entity.checked\"\n" + |
| " >\n" + |
| " </td>\n" + |
| " <td ng-if=\"hasProperty('name')\">{{entity._data.name}}</td>\n" + |
| " <td>{{entity._data.uuid}}</td>\n" + |
| " <td><a href=\"javaScript:void(0)\" ng-click=\"entitySelected[$index] = !entitySelected[$index]; selectEntity(entity._data.uuid, entitySelected[$index]);\">{{entitySelected[$index] ? 'Hide' : 'View'}} Details</a></td>\n" + |
| " </tr>\n" + |
| " <tr ng-if=\"entitySelected[$index]\">\n" + |
| " <td colspan=\"5\">\n" + |
| "\n" + |
| "\n" + |
| " <h4 style=\"margin: 0 0 20px 0\">Entity Detail</h4>\n" + |
| "\n" + |
| "\n" + |
| " <ul class=\"formatted-json\">\n" + |
| " <li ng-repeat=\"(k,v) in entity._data track by $index\">\n" + |
| " <span class=\"key\">{{k}} :</span>\n" + |
| " <!--todo - doing manual recursion to get this out the door for launch, please fix-->\n" + |
| " <span ng-switch on=\"isDeep(v)\">\n" + |
| " <ul ng-switch-when=\"true\">\n" + |
| " <li ng-repeat=\"(k2,v2) in v\"><span class=\"key\">{{k2}} :</span>\n" + |
| "\n" + |
| " <span ng-switch on=\"isDeep(v2)\">\n" + |
| " <ul ng-switch-when=\"true\">\n" + |
| " <li ng-repeat=\"(k3,v3) in v2\"><span class=\"key\">{{k3}} :</span><span class=\"value\">{{v3}}</span></li>\n" + |
| " </ul>\n" + |
| " <span ng-switch-when=\"false\">\n" + |
| " <span class=\"value\">{{v2}}</span>\n" + |
| " </span>\n" + |
| " </span>\n" + |
| " </li>\n" + |
| " </ul>\n" + |
| " <span ng-switch-when=\"false\">\n" + |
| " <span class=\"value\">{{v}}</span>\n" + |
| " </span>\n" + |
| " </span>\n" + |
| " </li>\n" + |
| " </ul>\n" + |
| "\n" + |
| " <div class=\"control-group\">\n" + |
| " <h4 style=\"margin: 20px 0 20px 0\">Edit Entity <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('data edit entity')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_edit_entity}}\" tooltip-placement=\"right\">(?)</a></h4>\n" + |
| " <div class=\"controls\">\n" + |
| " <textarea ng-model=\"entity._json\" class=\"span12\" rows=\"12\"></textarea>\n" + |
| " <br>\n" + |
| " <a class=\"btn btn-primary toolbar pull-left\" ng-click=\"validateJson();\">Validate JSON</a><button type=\"button\" class=\"btn btn-primary pull-right\" id=\"button-query\" ng-click=\"saveEntity(entity);\">Save</button>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " </td>\n" + |
| " </tr>\n" + |
| "\n" + |
| " <tr ng-show=\"queryCollection._list.length == 0\">\n" + |
| " <td colspan=\"4\">No data found</td>\n" + |
| " </tr>\n" + |
| " </tbody>\n" + |
| "</table>\n" + |
| "<div style=\"padding: 10px 5px 10px 5px\">\n" + |
| " <button class=\"btn btn-primary toolbar\" ng-click=\"getPrevious()\" style=\"display:{{previous_display}}\">< Previous</button>\n" + |
| " <button class=\"btn btn-primary toolbar\" ng-click=\"getNext()\" style=\"display:{{next_display}}; float:right;\">Next ></button>\n" + |
| "</div>\n" + |
| "\n" |
| ); |
| |
| |
| $templateCache.put('data/display-groups.html', |
| "" |
| ); |
| |
| |
| $templateCache.put('data/display-roles.html', |
| "roles---------------------------------" |
| ); |
| |
| |
| $templateCache.put('data/display-users.html', |
| "\n" + |
| "<table id=\"query-response-table\" class=\"table\">\n" + |
| " <tbody>\n" + |
| " <tr class=\"zebraRows users-row\">\n" + |
| " <td class=\"checkboxo\">\n" + |
| " <input type=\"checkbox\" onclick=\"Usergrid.console.selectAllEntities(this);\"></td>\n" + |
| " <td class=\"gravatar50-td\"> </td>\n" + |
| " <td class=\"user-details bold-header\">Username</td>\n" + |
| " <td class=\"user-details bold-header\">Display Name</td>\n" + |
| " <td class=\"user-details bold-header\">UUID</td>\n" + |
| " <td class=\"view-details\"> </td>\n" + |
| " </tr>\n" + |
| " <tr class=\"zebraRows users-row\">\n" + |
| " <td class=\"checkboxo\">\n" + |
| " <input class=\"listItem\" type=\"checkbox\" name=\"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7\" value=\"bf9a95da-d508-11e2-bf44-236d2eee13a7\">\n" + |
| " </td>\n" + |
| " <td class=\"gravatar50-td\">\n" + |
| " <img src=\"http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e\" class=\"gravatar50\">\n" + |
| " </td>\n" + |
| " <td class=\"details\">\n" + |
| " <a onclick=\"Usergrid.console.getCollection('GET', '/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/'+'bf9a95da-d508-11e2-bf44-236d2eee13a7'); $('#data-explorer').show(); return false;\" class=\"view-details\">10</a>\n" + |
| " </td>\n" + |
| " <td class=\"details\"> #\"><img src=x onerror=prompt(1);> </td>\n" + |
| " <td class=\"details\"> bf9a95da-d508-11e2-bf44-236d2eee13a7 </td>\n" + |
| " <td class=\"view-details\">\n" + |
| " <a href=\"\" onclick=\"$('#query-row-bf9a95da-d508-11e2-bf44-236d2eee13a7').toggle(); $('#data-explorer').show(); return false;\" class=\"view-details\">Details</a>\n" + |
| " </td>\n" + |
| " </tr>\n" + |
| " <tr id=\"query-row-bf9a95da-d508-11e2-bf44-236d2eee13a7\" style=\"display:none\">\n" + |
| " <td colspan=\"5\">\n" + |
| " <div>\n" + |
| " <div style=\"padding-bottom: 10px;\">\n" + |
| " <button type=\"button\" class=\"btn btn-small query-button active\" id=\"button-query-show-row-JSON\" onclick=\"Usergrid.console.activateQueryRowJSONButton(); $('#query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7').show(); $('#query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7').hide(); return false;\">JSON</button>\n" + |
| " <button type=\"button\" class=\"btn btn-small query-button disabled\" id=\"button-query-show-row-content\" onclick=\"Usergrid.console.activateQueryRowContentButton();$('#query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7').show(); $('#query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7').hide(); return false;\">Content</button>\n" + |
| " </div>\n" + |
| " <div id=\"query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7\">\n" + |
| " <pre>{\n" + |
| " \"picture\": \"http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e\",\n" + |
| " \"uuid\": \"bf9a95da-d508-11e2-bf44-236d2eee13a7\",\n" + |
| " \"type\": \"user\",\n" + |
| " \"name\": \"#\"><img src=x onerror=prompt(1);>\",\n" + |
| " \"created\": 1371224432557,\n" + |
| " \"modified\": 1371851347024,\n" + |
| " \"username\": \"10\",\n" + |
| " \"email\": \"fdsafdsa@ookfd.com\",\n" + |
| " \"activated\": \"true\",\n" + |
| " \"adr\": {\n" + |
| " \"addr1\": \"\",\n" + |
| " \"addr2\": \"\",\n" + |
| " \"city\": \"\",\n" + |
| " \"state\": \"\",\n" + |
| " \"zip\": \"\",\n" + |
| " \"country\": \"\"\n" + |
| " },\n" + |
| " \"metadata\": {\n" + |
| " \"path\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7\",\n" + |
| " \"sets\": {\n" + |
| " \"rolenames\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/rolenames\",\n" + |
| " \"permissions\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/permissions\"\n" + |
| " },\n" + |
| " \"collections\": {\n" + |
| " \"activities\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/activities\",\n" + |
| " \"devices\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/devices\",\n" + |
| " \"feed\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/feed\",\n" + |
| " \"groups\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/groups\",\n" + |
| " \"roles\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/roles\",\n" + |
| " \"following\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/following\",\n" + |
| " \"followers\": \"/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/followers\"\n" + |
| " }\n" + |
| " },\n" + |
| " \"title\": \"#\"><img src=x onerror=prompt(1);>\"\n" + |
| "}</pre>\n" + |
| " </div>\n" + |
| " <div id=\"query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7\" style=\"display:none\">\n" + |
| " <table>\n" + |
| " <tbody>\n" + |
| " <tr>\n" + |
| " <td>picture</td>\n" + |
| " <td>http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e</td></tr><tr><td>uuid</td><td>bf9a95da-d508-11e2-bf44-236d2eee13a7</td></tr><tr><td>type</td><td>user</td></tr><tr><td>name</td><td>#&quot;&gt;&lt;img src=x onerror=prompt(1);&gt;</td></tr><tr><td>created</td><td>1371224432557</td></tr><tr><td>modified</td><td>1371851347024</td></tr><tr><td>username</td><td>10</td></tr><tr><td>email</td><td>fdsafdsa@ookfd.com</td></tr><tr><td>activated</td><td>true</td></tr><tr><td></td><td style=\"padding: 0\"><table><tbody><tr></tr><tr><td>addr1</td><td></td></tr><tr><td>addr2</td><td></td></tr><tr><td>city</td><td></td></tr><tr><td>state</td><td></td></tr><tr><td>zip</td><td></td></tr><tr><td>country</td><td></td></tr></tbody></table></td></tr><tr><td></td><td style=\"padding: 0\"><table><tbody><tr></tr><tr><td>path</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7</td></tr><tr><td></td><td style=\"padding: 0\"><table><tbody><tr></tr><tr><td>rolenames</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/rolenames</td></tr><tr><td>permissions</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/permissions</td></tr></tbody></table></td></tr><tr><td></td><td style=\"padding: 0\"><table><tbody><tr></tr><tr><td>activities</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/activities</td></tr><tr><td>devices</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/devices</td></tr><tr><td>feed</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/feed</td></tr><tr><td>groups</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/groups</td></tr><tr><td>roles</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/roles</td></tr><tr><td>following</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/following</td></tr><tr><td>followers</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/followers</td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td>title</td><td>#&quot;&gt;&lt;img src=x onerror=prompt(1);&gt;</td>\n" + |
| " </tr>\n" + |
| " </tbody>\n" + |
| " </table>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " </td>\n" + |
| " </tr>\n" + |
| " </tbody>\n" + |
| "</table>" |
| ); |
| |
| |
| $templateCache.put('data/entity.html', |
| "<div class=\"content-page\">\n" + |
| "\n" + |
| " <h4>Entity Detail</h4>\n" + |
| " <div class=\"well\">\n" + |
| " <a href=\"#!/data\" class=\"outside-link\"><< Back to collection</a>\n" + |
| " </div>\n" + |
| " <fieldset>\n" + |
| " <div class=\"control-group\">\n" + |
| " <strong>Path </strong>\n" + |
| " <div class=\"controls\">\n" + |
| " {{entityType}}/{{entityUUID}}\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "\n" + |
| " <div class=\"control-group\">\n" + |
| " <label class=\"control-label\" for=\"query-source\"><strong>JSON Body</strong></label>\n" + |
| " <div class=\"controls\">\n" + |
| " <textarea ng-model=\"queryBody\" class=\"span6 pull-left\" rows=\"12\">{{queryBody}}</textarea>\n" + |
| " <br>\n" + |
| " <a class=\"btn pull-left\" ng-click=\"validateJson();\">Validate JSON</a>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " <div style=\"clear: both; height: 10px;\"></div>\n" + |
| " <div class=\"control-group\">\n" + |
| " <button type=\"button\" class=\"btn btn-primary\" id=\"button-query\" ng-click=\"saveEntity();\">Save</button>\n" + |
| " <!--button type=\"button\" class=\"btn btn-primary\" id=\"button-query\" ng-click=\"run();\">Delete</button-->\n" + |
| " </div>\n" + |
| " </fieldset>\n" + |
| "\n" + |
| "</div>\n" + |
| "\n" |
| ); |
| |
| |
| $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=\"globalNavDetailApiConsoles\">\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=\"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" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('group title box')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_details_title}}\" tooltip-placement=\"right\">(?)</a>\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" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('group path box')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_details_path}}\" tooltip-placement=\"right\">(?)</a>\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 <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('group json object')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_json_object}}\" tooltip-placement=\"right\">(?)</a></h4>\n" + |
| " <pre id=\"{{help.showJsonId}}\">{{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" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('group add user button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_users_add_user}}\" tooltip-placement=\"left\">(?)</a>\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,'groupMembersSelected')\"></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>" |
| ); |
| |
| |
| $templateCache.put('groups/groups-roles.html', |
| "<div class=\"content-page\" ng-controller=\"GroupsRolesCtrl\">\n" + |
| "\n" + |
| " <bsmodal id=\"addGroupToRole\"\n" + |
| " title=\"Add group to role\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"addGroupToRoleDialog\"\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 : 'Role name...'}}</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=\"leaveRoleFromGroup\"\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 group from the role(s)?</p>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| "\n" + |
| " <div class=\"button-strip\">\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('groups roles add role button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_roles_add_leave_role}}\" tooltip-placement=\"left\">(?)</a>\n" + |
| " <button class=\"btn btn-primary\" ng-click=\"showModal('addGroupToRole')\">Add Role to Group</button>\n" + |
| " <button class=\"btn btn-primary\" ng-disabled=\"!hasRoles || !valueSelected(groupsCollection.roles._list)\" ng-click=\"showModal('leaveRoleFromGroup')\">Remove Role(s) from Group</button>\n" + |
| " </div>\n" + |
| " <h4>Roles <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('groups roles roles list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_roles_roles}}\" tooltip-placement=\"top\">(?)</a></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=\"groupsSelectAllCheckBox\" ng-model=\"groupRoleSelected\" ng-click=\"selectAllEntities(groupsCollection.roles._list,this,'groupRoleSelected')\" ></td>\n" + |
| " <td>Role Name</td>\n" + |
| " <td>Role title</td>\n" + |
| " </tr>\n" + |
| " <tr class=\"zebraRows\" ng-repeat=\"role in groupsCollection.roles._list\">\n" + |
| " <td>\n" + |
| " <input\n" + |
| " type=\"checkbox\"\n" + |
| " ng-model=\"role.checked\"\n" + |
| " >\n" + |
| " </td>\n" + |
| " <td>{{role._data.name}}</td>\n" + |
| " <td>{{role._data.title}}</td>\n" + |
| " </tr>\n" + |
| " </tbody>\n" + |
| " </table>\n" + |
| " <div style=\"padding: 10px 5px 10px 5px\">\n" + |
| " <button class=\"btn btn-primary\" ng-click=\"getPreviousRoles()\" style=\"display:{{roles_previous_display}}\">< Previous</button>\n" + |
| " <button class=\"btn btn-primary\" ng-click=\"getNextRoles()\" style=\"display:{{roles_next_display}};float:right;\">Next ></button>\n" + |
| " </div>\n" + |
| "\n" + |
| "\n" + |
| " <bsmodal id=\"deletePermission\"\n" + |
| " title=\"Confirmation\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"deleteGroupPermissionDialog\"\n" + |
| " extrabuttonlabel=\"Delete\"\n" + |
| " ng-cloak>\n" + |
| " <p>Are you sure you want to delete the permission(s)?</p>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| "\n" + |
| " <bsmodal id=\"addPermission\"\n" + |
| " title=\"New Permission\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"addGroupPermissionDialog\"\n" + |
| " extrabuttonlabel=\"Add\"\n" + |
| " ng-cloak>\n" + |
| " <p>Path: <input ng-model=\"$parent.permissions.path\" placeholder=\"ex: /mydata\" id=\"groupsrolespermissions\" type=\"text\" ng-pattern=\"pathRegex\" ng-attr-title=\"{{pathRegexDescription}}\" required ug-validate /> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles new permission path box')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_roles_new_permission_path}}\" tooltip-placement=\"right\">(?)</a></p>\n" + |
| " <div class=\"control-group\">\n" + |
| " <input type=\"checkbox\" ng-model=\"$parent.permissions.getPerm\"> GET <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles add permission button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_roles_new_permission_verbs}}\" tooltip-placement=\"right\">(?)</a>\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 type=\"checkbox\" ng-model=\"$parent.permissions.deletePerm\"> DELETE\n" + |
| " </div>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| "\n" + |
| " <div class=\"button-strip\">\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('groups roles add permission button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_roles_add_delete_permission}}\" tooltip-placement=\"left\">(?)</a>\n" + |
| " <button class=\"btn btn-primary\" ng-click=\"showModal('addPermission')\">Add Permission</button>\n" + |
| " <button class=\"btn btn-primary\" ng-disabled=\"!hasPermissions || !valueSelected(selectedGroup.permissions)\" ng-click=\"showModal('deletePermission')\">Delete Permission(s)</button>\n" + |
| " </div>\n" + |
| " <h4>Permissions <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('groups roles permissions list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_roles_permissions}}\" tooltip-placement=\"top\">(?)</a>\n" + |
| " </h4>\n" + |
| " <table class=\"table table-striped\">\n" + |
| " <tbody>\n" + |
| " <tr class=\"table-header\">\n" + |
| " <td style=\"width: 30px;\"><input ng-show=\"hasPermissions\" type=\"checkbox\" id=\"permissionsSelectAllCheckBox\" ng-model=\"groupPermissionsSelected\" ng-click=\"selectAllEntities(selectedGroup.permissions,this,'groupPermissionsSelected')\" ></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 selectedGroup.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" + |
| "\n" + |
| "</div>" |
| ); |
| |
| |
| $templateCache.put('groups/groups-tabs.html', |
| "<div class=\"content-page\">\n" + |
| "\n" + |
| " <section class=\"row-fluid\">\n" + |
| "\n" + |
| " <div class=\"span12\">\n" + |
| " <div class=\"page-filters\">\n" + |
| " <h1 class=\"title\" class=\"pull-left\"><i class=\"pictogram title\">👥</i> Groups</h1>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "\n" + |
| " </section>\n" + |
| "\n" + |
| " <div id=\"user-panel\" class=\"panel-buffer\">\n" + |
| " <ul id=\"user-panel-tab-bar\" class=\"nav nav-tabs\">\n" + |
| " <li><a href=\"javaScript:void(0);\" ng-click=\"gotoPage('groups')\">Group List</a></li>\n" + |
| " <li ng-class=\"detailsSelected\"><a href=\"javaScript:void(0);\" ng-click=\"gotoPage('groups/details')\">Details</a></li>\n" + |
| " <li ng-class=\"membersSelected\"><a href=\"javaScript:void(0);\" ng-click=\"gotoPage('groups/members')\">Users</a></li>\n" + |
| " <li ng-class=\"activitiesSelected\"><a href=\"javaScript:void(0);\" ng-click=\"gotoPage('groups/activities')\">Activities</a></li>\n" + |
| " <li ng-class=\"rolesSelected\"><a href=\"javaScript:void(0);\" ng-click=\"gotoPage('groups/roles')\">Roles & Permissions</a></li>\n" + |
| " </ul>\n" + |
| " </div>\n" + |
| "\n" + |
| " <div style=\"float: left; margin-right: 10px;\">\n" + |
| " <div style=\"float: left;\">\n" + |
| " <div class=\"user-header-title\"><strong>Group Path: </strong>{{selectedGroup.get('path')}}</div>\n" + |
| " <div class=\"user-header-title\"><strong>Group Title: </strong>{{selectedGroup.get('title')}}</div>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "</div>\n" + |
| "<br>\n" + |
| "<br>\n" |
| ); |
| |
| |
| $templateCache.put('groups/groups.html', |
| "<div class=\"content-page\">\n" + |
| "\n" + |
| " <div id=\"intro-page\" >\n" + |
| " <page-title title=\" Groups\" icon=\"👥\"></page-title>\n" + |
| " \n" + |
| " </div>\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" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('group title box')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_details_title}}\" tooltip-placement=\"right\">(?)</a>\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=\"{{pathRegexDescription}}\" placeholder=\"ex: /mydata\" ng-pattern=\"pathRegex\" required ng-model=\"newGroup.path\" class=\"input-xlarge\" ug-validate/>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('group path box')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_details_path}}\" tooltip-placement=\"right\">(?)</a>\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 id=\"intro-list\" class=\"span3 user-col\">\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 toolbar\" 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" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_add_remove_buttons}}\" tooltip-placement=\"right\">(?)</a>\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" + |
| " </div>\n" + |
| "\n" + |
| " <div id=\"{{help.showTabsId}}\" 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' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectGroupPage('/groups/details')\"><i class=\"pictogram\"></i>Details</a>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('groups details tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_details_tab}}\" tooltip-placement=\"right\">(?)</a></div>\n" + |
| " </li>\n" + |
| " <li class=\"tab\" ng-class=\"currentGroupsPage.route === '/groups/members' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectGroupPage('/groups/members')\"><i class=\"pictogram\">👥</i>Users</a>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('groups users tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_users_tab}}\" tooltip-placement=\"right\">(?)</a></div>\n" + |
| " </li>\n" + |
| " <li class=\"tab\" ng-class=\"currentGroupsPage.route === '/groups/activities' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectGroupPage('/groups/activities')\"><i class=\"pictogram\"></i>Activities</a>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('groups activities tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_activities_tab}}\" tooltip-placement=\"right\">(?)</a></div>\n" + |
| " </li>\n" + |
| " <li class=\"tab\" ng-class=\"currentGroupsPage.route === '/groups/roles' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectGroupPage('/groups/roles')\"><i class=\"pictogram\">🌎</i>Roles & Permissions</a>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('groups role tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_roles_tab}}\" tooltip-placement=\"right\">(?)</a></div>\n" + |
| " </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" + |
| "\t<iframe class=\"container\" ng-src=\"{{forgotPWiframeURL}}\" id=\"forgot-password-frame\" border=\"0\" style=\"border:0;width:600px;height:620px;\">\n" + |
| "\t<p>Email Address: <input id=\"resetPasswordEmail\" name=\"resetPasswordEmail\" /></p>\n" + |
| "\t<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\" id=\"loginError\" ng-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-developerkey\">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 id=\"gtm\" style=\"width: 450px;margin-top: 4em;\" />\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-disabled=\"!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('menu.html', |
| "<ul class=\"nav nav-list\" menu=\"sideMenu\">\n" + |
| " <li class=\"option {{item.active ? 'active' : ''}}\" ng-cloak=\"\" ng-repeat=\"item in menuItems\"><a data-ng-href=\"{{item.path}}\"><i class=\"pictogram\" ng-bind-html=\"item.pic\"></i>{{item.title}}</a>\n" + |
| " <ul class=\"nav nav-list\" ng-if=\"item.items\">\n" + |
| " <li ng-repeat=\"subItem in item.items\"><a data-ng-href=\"{{subItem.path}}\"><i class=\"pictogram sub\" ng-bind-html=\"subItem.pic\"></i>{{subItem.title}}</a>\n" + |
| " </li>\n" + |
| " </ul>\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 class=\"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" + |
| " \t<bsmodal id=\"introjs\"\n" + |
| " title=\"Welcome to the API BaaS Admin Portal\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Skip\"\n" + |
| " extrabutton=\"startFirstTimeUser\"\n" + |
| " extrabuttonlabel=\"Take the tour\"\n" + |
| " ng-cloak>\n" + |
| " <p>To get started, click 'Take the tour' for a full walkthrough of the admin portal, or click 'Skip' to start working right away.</p>\n" + |
| " </bsmodal>\n" + |
| "\t\t<div id=\"intro-4-current-org\">\t\n" + |
| "\t <h2 class=\"title\">Current Organization <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('current org')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_current_org}}\" tooltip-placement=\"right\">(?)</a></h2>\n" + |
| "\t <table class=\"table table-striped\">\n" + |
| "\t <tr>\n" + |
| "\t <td id=\"org-overview-name\">{{currentOrganization.name}}</td>\n" + |
| "\t <td style=\"text-align: right\">{{currentOrganization.uuid}}</td>\n" + |
| "\t </tr>\n" + |
| "\t </table>\n" + |
| "\t\t</div>\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" + |
| "\t\t<div id=\"intro-5-applications\">\t\t\n" + |
| "\t <h2 class=\"title\" > Applications <a class=\"help_tooltip\" ng-show=\"help.helpTooltipsEnabled\" ng-mouseover=\"help.sendTooltipGA('applications')\" href=\"#\" ng-attr-tooltip=\"{{tooltip_applications}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| "\t <div class=\"header-button btn-group pull-right\">\n" + |
| "\t <a class=\"btn filter-selector\" style=\"{{applicationsSize === 10 ? 'width:290px':''}}\" ng-click=\"showModal('newApplication')\">\n" + |
| "\t <span class=\"filter-label\">Add New App</span>\n" + |
| "\t </a>\n" + |
| "\t </div>\n" + |
| "\t </h2>\n" + |
| "\t\t\n" + |
| "\t <table class=\"table table-striped\">\n" + |
| "\t <tr ng-repeat=\"application in applications\">\n" + |
| "\t <td>{{application.name}}</td>\n" + |
| "\t <td style=\"text-align: right\">{{application.uuid}}</td>\n" + |
| "\t </tr>\n" + |
| "\t </table>\n" + |
| "\t\t</div>\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" + |
| "\t\t<div id=\"intro-6-org-api-creds\">\n" + |
| "\t <h2 class=\"title\" >Organization API Credentials <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('api org credentials')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_org_api_creds}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| "\t <div class=\"header-button btn-group pull-right\">\n" + |
| "\t <a class=\"btn filter-selector\" ng-click=\"showModal('regenerateCredentials')\">\n" + |
| "\t <span class=\"filter-label\">Regenerate Org Credentials</span>\n" + |
| "\t </a>\n" + |
| "\t </div>\n" + |
| "\t </h2>\n" + |
| "\t\n" + |
| "\t <table class=\"table table-striped\">\n" + |
| "\t <tr>\n" + |
| "\t <td >Client ID</td>\n" + |
| "\t <td style=\"text-align: right\" >{{orgAPICredentials.client_id}}</td>\n" + |
| "\t </tr>\n" + |
| "\t <tr>\n" + |
| "\t <td>Client Secret</td>\n" + |
| "\t <td style=\"text-align: right\">{{orgAPICredentials.client_secret}}</td>\n" + |
| "\t </tr>\n" + |
| "\t </table>\n" + |
| "\t\t</div>\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" + |
| "\t\t<div id=\"intro-7-org-admins\">\n" + |
| "\t <h2 class=\"title\" >Organization Administrators <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('org admins')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_org_admins}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| "\t <div class=\"header-button btn-group pull-right\">\n" + |
| "\t <a class=\"btn filter-selector\" ng-click=\"showModal('newAdministrator')\">\n" + |
| "\t <span class=\"filter-label\">Add New Administrator</span>\n" + |
| "\t </a>\n" + |
| "\t </div>\n" + |
| "\t </h2>\n" + |
| "\t\n" + |
| "\t <table class=\"table table-striped\">\n" + |
| "\t <tr ng-repeat=\"administrator in orgAdministrators\">\n" + |
| "\t <td><img style=\"width:30px;height:30px;\" ng-src=\"{{administrator.image}}\"> {{administrator.name}}</td>\n" + |
| "\t <td style=\"text-align: right\">{{administrator.email}}</td>\n" + |
| "\t </tr>\n" + |
| "\t </table>\n" + |
| "\t\t\t</div>\n" + |
| " </div>\n" + |
| "\n" + |
| " <div class=\"span6\">\n" + |
| " \t<div id=\"intro-8-activities\">\n" + |
| "\t <h2 class=\"title\">Activities <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('activities')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_activities}}\" tooltip-placement=\"right\">(?)</a></h2>\n" + |
| "\t <table class=\"table table-striped\">\n" + |
| "\t <tr ng-repeat=\"activity in activities\">\n" + |
| "\t <td>{{activity.title}}</td>\n" + |
| "\t <td style=\"text-align: right\">{{activity.date}}</td>\n" + |
| "\t </tr>\n" + |
| "\t </table>\n" + |
| "\t</div>\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-fluid\" >\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.applicationsArray\">\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 required 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-validate 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>" |
| ); |
| |
| |
| $templateCache.put('roles/roles-groups.html', |
| "<div class=\"content-page\" ng-controller=\"RolesGroupsCtrl\">\n" + |
| "\n" + |
| "\n" + |
| " <bsmodal id=\"addRoleToGroup\"\n" + |
| " title=\"Add group to role\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"addRoleToGroupDialog\"\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.path !== '' ? $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=\"setRoleModal(group)\">{{group.title}}</a></li>\n" + |
| " </ul>\n" + |
| " </div>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| " <bsmodal id=\"removeGroupFromRole\"\n" + |
| " title=\"Confirmation\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"removeGroupFromRoleDialog\"\n" + |
| " extrabuttonlabel=\"Leave\"\n" + |
| " ng-cloak>\n" + |
| " <p>Are you sure you want to remove the group from the role(s)?</p>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| "\n" + |
| " <div class=\"users-section\">\n" + |
| " <div class=\"button-strip\">\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('group add user button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_groups_add_group}}\" tooltip-placement=\"left\">(?)</a>\n" + |
| " <button class=\"btn btn-primary\" ng-click=\"showModal('addRoleToGroup')\">Add Group to Role</button>\n" + |
| " <button class=\"btn btn-primary\" ng-disabled=\"!hasGroups || !valueSelected(rolesCollection.groups._list)\" ng-click=\"showModal('removeGroupFromRole')\">Remove Group(s) from Role</button>\n" + |
| " </div>\n" + |
| " <table class=\"table table-striped\">\n" + |
| " <tr class=\"table-header\">\n" + |
| " <td style=\"width: 30px;\"><input type=\"checkbox\" ng-show=\"hasGroups\" id=\"selectAllCheckBox\" ng-model=\"roleGroupsSelected\" ng-click=\"selectAllEntities(rolesCollection.groups._list,this,'roleGroupsSelected')\"></td>\n" + |
| " <td>Title</td>\n" + |
| " <td>Path</td>\n" + |
| " </tr>\n" + |
| " <tr class=\"zebraRows\" ng-repeat=\"group in rolesCollection.groups._list\">\n" + |
| " <td>\n" + |
| " <input\n" + |
| " type=\"checkbox\"\n" + |
| " ng-model=\"group.checked\"\n" + |
| " >\n" + |
| " </td>\n" + |
| " <td>{{group._data.title}}</td>\n" + |
| " <td>{{group._data.path}}</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}}\" style=\"float:right;\">Next ></button>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "</div>" |
| ); |
| |
| |
| $templateCache.put('roles/roles-settings.html', |
| "<div class=\"content-page\" ng-controller=\"RolesSettingsCtrl\">\n" + |
| " <bsmodal id=\"deletePermission\"\n" + |
| " title=\"Confirmation\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"deleteRolePermissionDialog\"\n" + |
| " extrabuttonlabel=\"Delete\"\n" + |
| " ng-cloak>\n" + |
| " <p>Are you sure you want to delete the permission(s)?</p>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| "\n" + |
| " <bsmodal id=\"addPermission\"\n" + |
| " title=\"New Permission\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"addRolePermissionDialog\"\n" + |
| " extrabuttonlabel=\"Add\"\n" + |
| " ng-cloak>\n" + |
| " <p>Path: <input ng-model=\"$parent.permissions.path\" placeholder=\"ex: /mydata\" required ng-pattern=\"pathRegex\" ng-attr-title=\"{{pathRegexDescription}}\" ug-validate id=\"rolePermissionsPath\"/> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles new permission path box')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_roles_new_permission_path}}\" tooltip-placement=\"right\">(?)</a></p>\n" + |
| " <div class=\"control-group\">\n" + |
| " <input type=\"checkbox\" ng-model=\"$parent.permissions.getPerm\"> GET <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles add permission verbs')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_new_permission_verbs}}\" tooltip-placement=\"right\">(?)</a>\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 type=\"checkbox\" ng-model=\"$parent.permissions.deletePerm\"> DELETE\n" + |
| " </div>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| " <div>\n" + |
| " <h4>Inactivity <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles inactivity')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_inactivity}}\" tooltip-placement=\"right\">(?)</a></h4>\n" + |
| " <div id=\"role-permissions\">\n" + |
| " <p>Integer only. 0 (zero) means no expiration.</p>\n" + |
| "\n" + |
| " <form name=\"updateActivity\" ng-submit=\"updateInactivity()\" novalidate>\n" + |
| " Seconds: <input style=\"margin: 0\" type=\"number\" required name=\"role-inactivity\"\n" + |
| " id=\"role-inactivity-input\" min=\"0\" ng-model=\"role._data.inactivity\" title=\"Please input a positive integer >= 0.\" step = \"any\" ug-validate >\n" + |
| " <input type=\"submit\" class=\"btn btn-primary\" ng-disabled=\"!updateActivity.$valid\" value=\"Set\"/>\n" + |
| " </form>\n" + |
| " </div>\n" + |
| "\n" + |
| " <br/>\n" + |
| " <div class=\"button-strip\">\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('roles details add permission button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_add_delete_permission}}\" tooltip-placement=\"left\">(?)</a>\n" + |
| " <button class=\"btn btn-primary\" ng-click=\"showModal('addPermission')\">Add Permission</button>\n" + |
| " <button class=\"btn btn-primary\" ng-disabled=\"!hasSettings || !valueSelected(role.permissions)\" ng-click=\"showModal('deletePermission')\">Delete Permission(s)</button>\n" + |
| " </div>\n" + |
| "\n" + |
| " <h4>Permissions <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('roles settings permissions list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_permissions}}\" tooltip-placement=\"top\">(?)</a></h4>\n" + |
| " <table class=\"table table-striped\">\n" + |
| " <tbody>\n" + |
| " <tr class=\"table-header\">\n" + |
| " <td style=\"width: 30px;\"><input type=\"checkbox\" ng-show=\"hasSettings\" id=\"selectAllCheckBox\" ng-model=\"permissionsSelected\" ng-click=\"selectAllEntities(role.permissions,this,'permissionsSelected')\" ></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 role.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>" |
| ); |
| |
| |
| $templateCache.put('roles/roles-tabs.html', |
| "<div class=\"content-page\">\n" + |
| " <section class=\"row-fluid\">\n" + |
| "\n" + |
| " <div class=\"span12\">\n" + |
| " <div class=\"page-filters\">\n" + |
| " <h1 class=\"title\" class=\"pull-left\"><i class=\"pictogram title\"></i> Roles </h1>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('roles page title')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_page_title}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "\n" + |
| " </section>\n" + |
| "\n" + |
| " <div id=\"user-panel\" class=\"panel-buffer\">\n" + |
| " <ul id=\"user-panel-tab-bar\" class=\"nav nav-tabs\">\n" + |
| " <li><a href=\"javaScript:void(0);\" ng-click=\"gotoPage('roles')\">Roles List</a></li>\n" + |
| " <li ng-class=\"settingsSelected\"><a href=\"javaScript:void(0);\" ng-click=\"gotoPage('roles/settings')\">Settings</a></li>\n" + |
| " <li ng-class=\"usersSelected\"><a href=\"javaScript:void(0);\" ng-click=\"gotoPage('roles/users')\">Users</a></li>\n" + |
| " <li ng-class=\"groupsSelected\"><a href=\"javaScript:void(0);\" ng-click=\"gotoPage('roles/groups')\">Groups</a></li>\n" + |
| " </ul>\n" + |
| " </div>\n" + |
| "\n" + |
| " <div style=\"float: left; margin-right: 10px;\">\n" + |
| " <div style=\"float: left;\">\n" + |
| " <div class=\"user-header-title\"><strong>Role Name: </strong>{{selectedRole.name}}</div>\n" + |
| " <div class=\"user-header-title\"><strong>Role Title: </strong>{{selectedRole.title}}</div>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| "\n" + |
| "</div>\n" + |
| "<br>\n" + |
| "<br>" |
| ); |
| |
| |
| $templateCache.put('roles/roles-users.html', |
| "<div class=\"content-page\" ng-controller=\"RolesUsersCtrl\">\n" + |
| " <bsmodal id=\"removeFromRole\"\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 role(s)?</p>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| " <bsmodal id=\"addRoleToUser\"\n" + |
| " title=\"Add user to role\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"addRoleToUserDialog\"\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.username ? $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" + |
| " <div class=\"users-section\">\n" + |
| " <div class=\"button-strip\">\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('roles add user button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_users_add_user}}\" tooltip-placement=\"left\">(?)</a>\n" + |
| " <button class=\"btn btn-primary\" ng-click=\"showModal('addRoleToUser')\">Add User to Role</button>\n" + |
| " <button class=\"btn btn-primary\" ng-disabled=\"!hasUsers || !valueSelected(rolesCollection.users._list)\" ng-click=\"showModal('removeFromRole')\">Remove User(s) from Role</button>\n" + |
| " </div>\n" + |
| " <table class=\"table table-striped\">\n" + |
| " <tr class=\"table-header\">\n" + |
| " <td style=\"width: 30px;\"><input type=\"checkbox\" ng-show=\"hasUsers\" id=\"selectAllCheckBox\" ng-model=\"roleUsersSelected\" ng-click=\"selectAllEntities(rolesCollection.users._list,this,'roleUsersSelected')\" ng-model=\"master\"></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 rolesCollection.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._data.username}}</td>\n" + |
| " <td>{{user._data.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>\n" + |
| "</div>" |
| ); |
| |
| |
| $templateCache.put('roles/roles.html', |
| "<div class=\"content-page\">\n" + |
| " <div id=\"intro-page\" >\n" + |
| " <page-title title=\" Roles\" icon=\"\"></page-title>\n" + |
| " </div>\n" + |
| "\n" + |
| " <bsmodal id=\"newRole\"\n" + |
| " title=\"New Role\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"newRoleDialog\"\n" + |
| " extrabuttonlabel=\"Create\"\n" + |
| " buttonid=\"roles\"\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=\"new-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" + |
| " buttonid=\"deleteroles\"\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 id=\"intro-list\" 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=\"hasRoles\" ng-click=\"selectAllEntities(rolesCollection._list,this,'rolesSelected',true)\"> <i class=\"pictogram\">⊟</i></a>\n" + |
| " <button id=\"delete-role-btn\" title=\"Delete\" class=\"btn btn-primary toolbar\" ng-disabled=\"!hasRoles || !valueSelected(rolesCollection._list)\" ng-click=\"showModal('deleteRole')\"><i class=\"pictogram\">☕</i></button>\n" + |
| " <button id=\"add-role-btn\" title=\"Add\" class=\"btn btn-primary toolbar\" ng-click=\"showModal('newRole')\"><i class=\"pictogram\"></i></button>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users add remove buttons')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_add_remove_buttons}}\" tooltip-placement=\"right\">(?)</a> </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" + |
| " id=\"role-{{role.get('title')}}-cb\"\n" + |
| " >\n" + |
| " <a id=\"role-{{role.get('title')}}-link\">{{role.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 id=\"intro-information-tabs\" 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' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectRolePage('/roles/settings')\"><i class=\"pictogram\"></i>Settings</a> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('roles settings tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_settings_tab}}\" tooltip-placement=\"right\">(?)</a></div></li>\n" + |
| " <li class=\"tab\" ng-class=\"currentRolesPage.route === '/roles/users' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectRolePage('/roles/users')\"><i class=\"pictogram\">👥</i>Users</a> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('roles users tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_users_tab}}\" tooltip-placement=\"right\">(?)</a></div></li>\n" + |
| " <li class=\"tab\" ng-class=\"currentRolesPage.route === '/roles/groups' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectRolePage('/roles/groups')\"><i class=\"pictogram\"></i>Groups</a> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('roles groups tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_groups_tab}}\" tooltip-placement=\"right\">(?)</a></div></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 id=\"lastshelloutput\" ng-bind-html=\"shell.outputhidden\" style=\"visibility:hidden\"></div>\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 /> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users add activity content')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_activities_add_activity_content}}\" tooltip-placement=\"right\">(?)</a></p>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| "\n" + |
| " <div ng:include=\"'users/users-tabs.html'\"></div>\n" + |
| " <br>\n" + |
| " <div class=\"button-strip\"><a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users add activity button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_activities_add_activity}}\" tooltip-placement=\"left\">(?)</a> \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>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.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" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users follow user')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_graph_follow_user}}\" tooltip-placement=\"left\">(?)</a> \n" + |
| " <button class=\"btn btn-primary\" ng-click=\"showModal('followUser')\">Follow User</button>\n" + |
| " </div>\n" + |
| " <br>\n" + |
| " <h4>Following <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users following list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_graph_following}}\" tooltip-placement=\"right\">(?)</a></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 <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users followers list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_graph_followers}}\" tooltip-placement=\"right\">(?)</a></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" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users add leave group buttons')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_add_leave_buttons}}\" tooltip-placement=\"left\">(?)</a>\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 <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('add user group list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_group_name}}\" tooltip-placement=\"top\">(?)</a></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 <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users profile information')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_profile_information}}\" tooltip-placement=\"top\">(?)</a></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-pattern=\"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 <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users profile json')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_profile_json}}\" tooltip-placement=\"top\">(?)</a></legend>\n" + |
| " <pre id=\"{{help.showJsonId}}\">{{user.json}}</pre>\n" + |
| " </div>\n" + |
| " </form>\n" + |
| " </div>\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" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles add role button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_add_leave_role}}\" tooltip-placement=\"left\">(?)</a>\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 <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles roles list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_roles}}\" tooltip-placement=\"top\">(?)</a></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}}\" /> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles new permission path box')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_new_permission_path}}\" tooltip-placement=\"right\">(?)</a></p>\n" + |
| " <div class=\"control-group\">\n" + |
| " <input type=\"checkbox\" ng-model=\"$parent.permissions.getPerm\"> GET <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles new permission verbs check boxes')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_new_permission_verbs}}\" tooltip-placement=\"right\">(?)</a>\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 type=\"checkbox\" ng-model=\"$parent.permissions.deletePerm\"> DELETE\n" + |
| " </div>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| " <div class=\"button-strip\">\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles add permission button')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_add_delete_permission}}\" tooltip-placement=\"left\">(?)</a>\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 <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles permissions list')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_permissions}}\" tooltip-placement=\"top\">(?)</a></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" + |
| " <div id=\"intro-page\"> \n" + |
| " <page-title title=\" Users\" icon=\"👤\"></page-title>\n" + |
| " </div>\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=\"{{usernameRegexDescription}}\" name=\"username\" id=\"new-user-username\" class=\"input-xlarge\" ug-validate/>\n" + |
| " <p class=\"help-block hide\"></p>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " <div class=\"control-group\">\n" + |
| " <label for=\"new-user-fullname\">Full name</label>\n" + |
| "\n" + |
| " <div class=\"controls\">\n" + |
| " <input type=\"text\" required ng-attr-title=\"{{nameRegexDescription}}\" ng-pattern=\"nameRegex\" ng-model=\"$parent.newUser.name\" name=\"name\" id=\"new-user-fullname\" class=\"input-xlarge\" ug-validate/>\n" + |
| "\n" + |
| " <p class=\"help-block hide\"></p>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " <div class=\"control-group\">\n" + |
| " <label for=\"new-user-email\">Email</label>\n" + |
| "\n" + |
| " <div class=\"controls\">\n" + |
| " <input type=\"email\" required ng-model=\"$parent.newUser.email\" pattern=\"emailRegex\" ng-attr-title=\"{{emailRegexDescription}}\" name=\"email\" id=\"new-user-email\" class=\"input-xlarge\" ug-validate/>\n" + |
| "\n" + |
| " <p class=\"help-block hide\"></p>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " <div class=\"control-group\">\n" + |
| " <label for=\"new-user-password\">Password</label>\n" + |
| "\n" + |
| " <div class=\"controls\">\n" + |
| " <input type=\"password\" required ng-pattern=\"passwordRegex\" ng-attr-title=\"{{passwordRegexDescription}}\" ng-model=\"$parent.newUser.newpassword\" name=\"password\" id=\"new-user-password\" ug-validate\n" + |
| " class=\"input-xlarge\"/>\n" + |
| "\n" + |
| " <p class=\"help-block hide\"></p>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " <div class=\"control-group\">\n" + |
| " <label for=\"new-user-re-password\">Confirm password</label>\n" + |
| "\n" + |
| " <div class=\"controls\">\n" + |
| " <input type=\"password\" required ng-pattern=\"passwordRegex\" ng-attr-title=\"{{passwordRegexDescription}}\" ng-model=\"$parent.newUser.repassword\" name=\"re-password\" id=\"new-user-re-password\" ug-validate\n" + |
| " class=\"input-xlarge\"/>\n" + |
| "\n" + |
| " <p class=\"help-block hide\"></p>\n" + |
| " </div>\n" + |
| " </div>\n" + |
| " </fieldset>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| " <bsmodal id=\"deleteUser\"\n" + |
| " title=\"Delete User\"\n" + |
| " close=\"hideModal\"\n" + |
| " closelabel=\"Cancel\"\n" + |
| " extrabutton=\"deleteUsersDialog\"\n" + |
| " extrabuttonlabel=\"Delete\"\n" + |
| " buttonid=\"deleteusers\"\n" + |
| " ng-cloak>\n" + |
| " <p>Are you sure you want to delete the user(s)?</p>\n" + |
| " </bsmodal>\n" + |
| "\n" + |
| " <section class=\"row-fluid\">\n" + |
| " <div id=\"intro-list\" class=\"span3 user-col\">\n" + |
| " \n" + |
| " <div class=\"button-toolbar span12\">\n" + |
| " <a title=\"Select All\" class=\"btn btn-primary toolbar select-all\" ng-show=\"hasUsers\" ng-click=\"selectAllEntities(usersCollection._list,this,'usersSelected',true)\" ng-model=\"usersSelected\"> <i class=\"pictogram\">⊟</i></a>\n" + |
| " <button title=\"Delete\" class=\"btn btn-primary toolbar\" ng-disabled=\"!hasUsers || !valueSelected(usersCollection._list)\" ng-click=\"showModal('deleteUser')\" id=\"delete-user-button\"><i class=\"pictogram\">☕</i></button>\n" + |
| " <button title=\"Add\" class=\"btn btn-primary toolbar\" ng-click=\"showModal('newUser')\" id=\"new-user-button\" ng-attr-id=\"new-user-button\"><i class=\"pictogram\"></i></button>\n" + |
| " <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users add remove buttons')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_users_add_remove_buttons}}\" tooltip-placement=\"right\">(?)</a>\n" + |
| " </div>\n" + |
| " <ul class=\"user-list\">\n" + |
| " <li ng-class=\"selectedUser._data.uuid === user._data.uuid ? 'selected' : ''\" ng-repeat=\"user in usersCollection._list\" ng-click=\"selectUser(user._data.uuid)\">\n" + |
| " <input\n" + |
| " type=\"checkbox\"\n" + |
| " id=\"user-{{user.get('username')}}-checkbox\"\n" + |
| " ng-value=\"user.get('uuid')\"\n" + |
| " ng-checked=\"master\"\n" + |
| " ng-model=\"user.checked\"\n" + |
| " >\n" + |
| " <a href=\"javaScript:void(0)\" id=\"user-{{user.get('username')}}-link\" >{{user.get('username')}}</a>\n" + |
| " <span ng-if=\"user.name\" class=\"label\">Display Name:</span>{{user.name}}\n" + |
| " </li>\n" + |
| " </ul>\n" + |
| " <div style=\"padding: 10px 5px 10px 5px\">\n" + |
| " <button class=\"btn btn-primary toolbar\" ng-click=\"getPrevious()\" style=\"display:{{previous_display}}\">< Previous\n" + |
| " </button>\n" + |
| " <button class=\"btn btn-primary toolbar\" ng-click=\"getNext()\" style=\"display:{{next_display}}; float:right;\">Next >\n" + |
| " </button>\n" + |
| " </div>\n" + |
| " \n" + |
| " </div>\n" + |
| "\n" + |
| " <div id=\"{{help.showTabsId}}\" class=\"span9 tab-content\" ng-show=\"hasUsers\">\n" + |
| " <div class=\"menu-toolbar\">\n" + |
| " <ul class=\"inline\">\n" + |
| " <li class=\"tab\" ng-class=\"currentUsersPage.route === '/users/profile' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectUserPage('/users/profile')\"><i class=\"pictogram\"></i>Profile</a> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users profile tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_profile_tab}}\" tooltip-placement=\"right\">(?)</a></div></li>\n" + |
| " <li class=\"tab\" ng-class=\"currentUsersPage.route === '/users/groups' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectUserPage('/users/groups')\"><i class=\"pictogram\">👥</i>Groups</a> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users groups tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_groups_tab}}\" tooltip-placement=\"right\">(?)</a></div></li>\n" + |
| " <li class=\"tab\" ng-class=\"currentUsersPage.route === '/users/activities' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectUserPage('/users/activities')\"><i class=\"pictogram\"></i>Activities</a> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users activities tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_activities_tab}}\" tooltip-placement=\"right\">(?)</a></div></li>\n" + |
| " <li class=\"tab\" ng-class=\"currentUsersPage.route === '/users/feed' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectUserPage('/users/feed')\"><i class=\"pictogram\">📄</i>Feed</a> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users feed tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_feed_tab}}\" tooltip-placement=\"right\">(?)</a></div></li>\n" + |
| " <li class=\"tab\" ng-class=\"currentUsersPage.route === '/users/graph' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectUserPage('/users/graph')\"><i class=\"pictogram\">☁</i>Graph</a> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users graph tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_graph_tab}}\" tooltip-placement=\"top\">(?)</a></div></li>\n" + |
| " <li class=\"tab\" ng-class=\"currentUsersPage.route === '/users/roles' ? 'selected' : ''\"><div class=\"btn btn-primary toolbar\" ><a class=\"btn-content\" ng-click=\"selectUserPage('/users/roles')\"><i class=\"pictogram\">🌎</i>Roles & Permissions</a> <a class=\"help_tooltip\" ng-mouseover=\"help.sendTooltipGA('users roles tab')\" ng-show=\"help.helpTooltipsEnabled\" href=\"#\" ng-attr-tooltip=\"{{tooltip_roles_tab}}\" tooltip-placement=\"top\">(?)</a></div></li>\n" + |
| " </ul>\n" + |
| " </div>\n" + |
| " <span ng-include=\"currentUsersPage.template\"></span>\n" + |
| " </div>\n" + |
| " </section>\n" + |
| "</div>" |
| ); |
| |
| }]); |