Repository: stratos Updated Branches: refs/heads/master 94446b5bf -> 61214a30e
[STRATOS-1501] Application signups not available in the UI Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/08f8963c Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/08f8963c Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/08f8963c Branch: refs/heads/master Commit: 08f8963cf518b044dd3ad6b4494211856982ecd0 Parents: 94446b5 Author: Dakshika Jayathilaka <[email protected]> Authored: Thu Aug 20 09:32:17 2015 +0530 Committer: Dakshika Jayathilaka <[email protected]> Committed: Thu Aug 20 09:32:17 2015 +0530 ---------------------------------------------------------------------- .../console/applications_form.jag | 2 + .../applications/application_requests.jag | 3 + .../console/controllers/rest/rest_calls.jag | 4 + .../console/themes/theme0/css/custom.css | 2 +- .../theme0/css/custom/applications_signup.css | 224 +++++++++++ .../theme0/helpers/applications_signup.js | 29 ++ .../theme0/js/custom/applications-signup.js | 388 +++++++++++++++++++ .../theme0/partials/applications_form.hbs | 21 +- .../theme0/partials/applications_signup.hbs | 64 +++ .../theme0/renderers/applications_form.js | 60 +++ 10 files changed, 795 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/applications_form.jag ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/applications_form.jag b/components/org.apache.stratos.manager.console/console/applications_form.jag index ad1745c..6f63501 100644 --- a/components/org.apache.stratos.manager.console/console/applications_form.jag +++ b/components/org.apache.stratos.manager.console/console/applications_form.jag @@ -57,6 +57,8 @@ if (!elements) { }else if(elements.action == 'deploy'){ applicationHbs = 'applicationDeploy'; applicationPolicyData = util.RESTCalls.getApplicationPolicies(); + }else if(elements.action == 'signup'){ + applicationHbs = 'applicationSignup'; } }else{ http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag b/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag index 2e51c7b..5721e7c 100644 --- a/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag +++ b/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag @@ -46,6 +46,9 @@ try { case "forceundeployapplication": formSubmit = util.RESTCalls.forceUndeployApplication(applicationId); break; + case "signupapplication": + formSubmit = util.RESTCalls.signupApplication(applicationId, formPayload); + break; default: session.put("deploy-status", { "message": "Sorry Endpoint Error", "status": "error" }); http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag b/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag index 7b020fa..9876f63 100644 --- a/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag +++ b/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag @@ -140,6 +140,10 @@ RESTCalls = new function(){ return this.send("POST","/applications/"+applicationId+"/undeploy",{}); }; + this.signupApplication = function(applicationId, signupJSON){ + return this.send("POST","/applications/"+applicationId+"/signup",signupJSON); + }; + this.forceUndeployApplication = function(applicationId){ return this.send("POST","/applications/"+applicationId+"/undeploy?force=true",{}); }; http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom.css ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom.css b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom.css index a8b1b3a..bc2b889 100644 --- a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom.css +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom.css @@ -214,7 +214,7 @@ a.btn:hover { } button.hover-unsubscribe, button.hover-details, button.hover-delete,button.hover-delete-group, button.b-top, -button.hover-undeploy{ +button.hover-undeploy, button.hover-signup{ margin-top: .7em; } http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/applications_signup.css ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/applications_signup.css b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/applications_signup.css new file mode 100644 index 0000000..c86c79e --- /dev/null +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/applications_signup.css @@ -0,0 +1,224 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ + +.right-side{ + float: left; + width: 100%; + margin-top:20px; +} +#applicationId{ + left: 318px; + top: 33px; +} + +.stepnode { + border: 1px solid silver; + position: absolute !important; + width: 5em; + height: 5em; + padding: 0.5em; + z-index: 1; + border-radius: 0.5em; + box-shadow: 2px 2px 19px #aaa; + background: white; + word-wrap: break-word; + padding-top: 24px; + text-align: center; + cursor: pointer; +} + +.stepnode span{ + position: absolute; + width: 4em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-left: -27px; +} + +.block-cartridge { + border: 1px solid silver; + border-radius: 0.5em; + width: 80px; + height: 80px; + background-color:#CCC; + float: left; + margin: 5px; + padding: 5px; + word-wrap: break-word; + padding-top: 24px; + cursor: pointer; +} + +.block-group { + border: 1px solid silver; + border-radius: 0.5em; + width: 80px; + height: 80px; + background-color: #CCC; + float: left; + margin: 5px; + padding: 5px; + word-wrap: break-word; + padding-top: 24px; + cursor: pointer; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.app-creator { + height: 600px; + background-color: rgb(244, 244, 244); + border: 1px solid #ddd; + border-radius: 4px; + margin-left: 10px; + position: relative; +} + +#whiteboard{ + width: 100%; + height: 585px; + position: absolute; + overflow: auto; +} + +.description{ + min-height: 300px; + max-height: 400px; +} + +.component-section{ + max-height: 200px; + overflow: auto; + min-height: 200px; +} + +.description-section{ + min-height: 260px; + max-height: 400px; + overflow: auto; +} + +.app-details { + margin: 10px; +} + +.app-details-tab-content{ + border: 1px solid #ddd; + border-top: transparent; + min-height: 233px; + padding: 20px; + border-radius: 0 0 4px 4px; +} +.dragActive { + border: 2px dotted orange; + +} + +.node-disable{ + background-color: #bdc3c7; +} + + +.node circle { + fill: #fff; + stroke: steelblue; + stroke-width: 3px; +} + +.node text { font: 12px sans-serif; } + +.link { + fill: none; + stroke: rgb(0, 0, 255); + stroke-width: 0.5px; +} + +.input-false{ + background-color: #CCC; + border-color: #ddd; + border-width: 1px; +} + +#component-data>div>h3{ + display: none; +} + +#component-info-update{ + margin-top:-5px;margin-bottom: 20px; + float: right; +} + +#component-data{margin-top: 20px} +.stepnode i { + margin-top: 0px; + color: #e67e22; + margin-left: -7px; +} + +.notification { + position: absolute; + background-color: #fff; + width: 30px; + height: 30px; + border-radius: 15px; + top: 52px; + left: 52px; +} +.reposition { + float: right; + margin: 11px 20px; + padding: 5px; + background-color: white; + border-radius: 40px; + width: 40px; + z-index: 9999; + position: relative; + cursor: pointer; +} + +.reposition i{ + padding-left: 4px; + color: rgb(93, 170, 254); + padding-top: 2px; +} + +div#general>div>h3 { + display: none; +} +.highlightme{ + background-color: #6BCFFE; +} + +.signup-default i{ + color: #e67e22; +} + +.signup-default h4{ + text-align: center; + padding: 22px; + background-color: #CACACA; +} + +.signup-details { + margin-top: 2em; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_signup.js ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_signup.js b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_signup.js new file mode 100644 index 0000000..0efc591 --- /dev/null +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_signup.js @@ -0,0 +1,29 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +var resources = function (page, meta) { + return { + js: ['JSONEditor-0.7.12/jsoneditor-0.7.12.js','bootstrap-switch-3.0.2/bootstrap-switch.min.js', 'custom/script.js','custom/form.js', + 'jquery.contextMenu/jquery.contextMenu.js', 'jquery.contextMenu/jquery.ui.position.js', 'jsplumb-1.7.2/dom.jsPlumb-1.7.2-min.js', + 'dagre-v0.7.0/dagre.min.js','custom/applications-signup.js'], + css: ['bootstrap-switch-3.0.2/bootstrap-switch.min.css', 'custom/style.css', 'custom/applications_signup.css'] + }; +}; http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-signup.js ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-signup.js b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-signup.js new file mode 100644 index 0000000..7977824 --- /dev/null +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-signup.js @@ -0,0 +1,388 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +// repaint +function Repaint(){ + $("#whiteboard").resize(function(){ + jsPlumb.repaintEverything(); + }); +} +// drag +function DragEl(el){ + jsPlumb.draggable($(el) ,{ + containment:"#whiteboard" + }); +} + + +// JsPlumb Config +var color = "gray", + exampleColor = "#00f", + arrowCommon = { foldback:0.7, fillStyle:color, width:14 }; + +jsPlumb.importDefaults({ + Connector : [ "Bezier", { curviness:63 } ] +}); + + +var nodeDropOptions = { + activeClass:"dragActive" +}; + +var bottomConnectorOptions = { + endpoint:"Rectangle", + paintStyle:{ width:25, height:21, fillStyle:'#666' }, + isSource:true, + connectorStyle : { strokeStyle:"#666" }, + isTarget:false, + maxConnections:20 +}; + +var endpointOptions = { + isTarget:true, + endpoint:"Dot", + paintStyle:{ + fillStyle:"gray" + }, + dropOptions: nodeDropOptions, + maxConnections:1 +}; + +var groupOptions = { + isTarget:true, + endpoint:"Dot", + paintStyle:{ + fillStyle:"gray" + }, + dropOptions: nodeDropOptions, + maxConnections:1 +}; + +var generatedCartridgeEndpointOptions = { + isTarget:false, + endpoint:"Dot", + paintStyle:{ + fillStyle:"gray" + }, + dropOptions: '', + maxConnections:1 +}; + +var generatedGroupOptions = { + isTarget:false, + endpoint:"Dot", + paintStyle:{ + fillStyle:"gray" + }, + dropOptions: nodeDropOptions, + maxConnections:1 +}; + +function dagrePosition(){ + // construct dagre graph from JsPlumb graph + var g = new dagre.graphlib.Graph(); + g.setGraph({ranksep:'80'}); + g.setDefaultEdgeLabel(function() { return {}; }); + var nodes = $(".stepnode"); + + for (var i = 0; i < nodes.length; i++) { + var n = nodes[i]; + g.setNode(n.id, {width: 52, height: 52}); + } + var edges = jsPlumb.getAllConnections(); + for (var i = 0; i < edges.length; i++) { + var c = edges[i]; + g.setEdge(c.source.id,c.target.id ); + } + // calculate the layout (i.e. node positions) + dagre.layout(g); + + // Applying the calculated layout + g.nodes().forEach(function(v) { + $("#" + v).css("left", g.node(v).x + "px"); + $("#" + v).css("top", g.node(v).y + "px"); + }); + jsPlumb.repaintEverything(); +} +//add group to editor +var cartridgeCounter =0; +//add group to editor +function addJsplumbGroup(groupJSON, cartridgeCounter){ + + var divRoot = $('<div>').attr({'id':cartridgeCounter+'-'+groupJSON.alias,'data-type':'group','data-ctype':groupJSON.alias}) + .text(groupJSON.alias) + .addClass('input-false') + .addClass('stepnode') + .attr('data-toggle', 'tooltip') + .attr('title',groupJSON.alias ) + .appendTo('#whiteboard'); + jsPlumb.addEndpoint($(divRoot), { + anchor:"BottomCenter" + }, bottomConnectorOptions); + + DragEl($(divRoot)); + if(groupJSON['components']['cartridges']) { + genJsplumbCartridge(groupJSON['components']['cartridges'], divRoot, groupJSON.alias); + } + if(groupJSON['components']['groups']){ + genJsplumbGroups(groupJSON['components']['groups'], divRoot, groupJSON.alias); + } + + function genJsplumbCartridge(item, currentParent, parentName){ + for (var prop in item) { + var id = item[prop].type; + var divCartridge = $('<div>').attr({'id':cartridgeCounter+'-'+parentName+'-'+item[prop].type, 'data-type':'cartridge', + 'data-calias':item[prop]['subscribableInfo']['alias']} ) + .text(item[prop].type) + .addClass('input-false') + .addClass('stepnode') + .attr('data-toggle', 'tooltip') + .attr('title',item[prop].type ) + .appendTo('#whiteboard'); + $(divCartridge).append('<div class="notification"><i class="fa fa-exclamation-circle fa-2x"></i></div>'); + jsPlumb.addEndpoint($(divCartridge), { + anchor: "TopCenter" + }, generatedCartridgeEndpointOptions); + + //add connection options + jsPlumb.connect({ + source:$(currentParent), + target:$(divCartridge), + paintStyle:{strokeStyle:"blue", lineWidth:1 }, + Connector : [ "Bezier", { curviness:63 } ], + anchors:["BottomCenter", "TopCenter"], + endpoint:"Dot" + }); + + DragEl($(divCartridge)); + } + } + + function genJsplumbGroups(item, currentParent, parentName) { + for (var prop in item) { + var divGroup = $('<div>').attr({'id':cartridgeCounter+'-'+parentName+'-'+item[prop]['name'],'data-type':'group','data-ctype':item[prop]['name'] }) + .text(item[prop]['name']) + .addClass('stepnode') + .attr('data-toggle', 'tooltip') + .attr('title',item[prop]['name'] ) + .addClass('input-false') + .appendTo('#whiteboard'); + //$(divGroup).append('<div class="notification"><i class="fa fa-exclamation-circle fa-2x"></i></div>'); + jsPlumb.addEndpoint($(divGroup), { + anchor:"BottomCenter" + }, bottomConnectorOptions); + + jsPlumb.addEndpoint($(divGroup), { + anchor: "TopCenter" + }, generatedGroupOptions); + + //add connection options + jsPlumb.connect({ + source:$(currentParent), + target:$(divGroup), + paintStyle:{strokeStyle:"blue", lineWidth:1 }, + Connector : [ "Bezier", { curviness:63 } ], + anchors:["BottomCenter", "TopCenter"], + endpoint:"Dot" + }); + + DragEl($(divGroup)); + + if(item[prop].hasOwnProperty('cartridges')) { + genJsplumbCartridge(item[prop].cartridges, divGroup, parentName+'-'+item[prop]['name'] ); + } + if(item[prop].hasOwnProperty('groups')) { + genJsplumbGroups(item[prop].groups, divGroup, parentName+'-'+item[prop]['name']) + } + } + } + + + +} + + +jsPlumb.bind("ready", function() { + addJsplumbGroup(applicationJSON, cartridgeCounter); + //reposition after group add + dagrePosition(); +}); + + +var signupBlockTemplate = { + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "root", + "type": "object", + "title": " ", + "options": { + "disable_properties": true, + "disable_collapse": true + }, + "properties": { + "alias": { + "id": "root/alias", + "title": "Cartridge Alias: ", + "type": "string" + }, + "privateRepo": { + "id": "root/privateRepo", + "title": "Is private repository: ", + "type": "boolean" + }, + "repoUrl": { + "id": "root/repoUrl", + "title": "Repository URL: ", + "type": "string" + }, + "repoUsername": { + "id": "root/repoUsername", + "title": "Repository User Name: ", + "type": "string" + }, + "repoPassword": { + "id": "root/repoPassword", + "title": "Repository Password: ", + "type": "string" + } + } +}; + +var signupBlockDefault = { + "alias": "php", + "privateRepo": false, + "repoUrl": "https://github.com/imesh/stratos-php-applications.git", + "repoUsername": "", + "repoPassword": "" +}; + + +// Document ready events +$(document).ready(function(){ + //handled Ajax base session expire issue + $(document).ajaxError(function (e, xhr, settings) { + window.location.href = '../'; + }); + + //*******************Adding JSON editor *************// + JSONEditor.defaults.theme = 'bootstrap3'; + JSONEditor.defaults.iconlib = 'fontawesome4'; + JSONEditor.defaults.show_errors = "always"; + var editor,blockId; + + $('#whiteboard').on('click', '.stepnode', function(){ + $('.signup-details').show(); + $('.signup-default').hide(); + $('.stepnode').removeClass("highlightme"); + $(this).addClass('highlightme'); + tabData($(this)); + }); + + function tabData(node){ + + blockId = node.attr('id'); + var blockType = node.attr('data-type'); + var startval; + var calias = node.attr('data-calias'); + + if(blockType == 'cartridge'){ + startval = signupBlockDefault; + startval['alias'] = calias; + } + + if(node.attr('data-generated')) { + startval = JSON.parse(decodeURIComponent(node.attr('data-generated'))); + } + $('#signup-details').html(''); + + switch (blockType){ + case 'cartridge': + generateHtmlBlock(signupBlockTemplate, startval); + break; + } + } + + function generateHtmlBlock(schema, startval){ + // Initialize the editor + editor = new JSONEditor(document.getElementById('signup-details'), { + ajax: false, + disable_edit_json: true, + schema: schema, + format: "grid", + startval: startval + }); + + if(editor.getEditor('root.alias')){ + editor.getEditor('root.alias').disable(); + } + + } + + + //get component JSON data + $('#component-info-update').on('click', function(){ + $('#'+blockId).attr('data-generated', encodeURIComponent(JSON.stringify(editor.getValue()))); + $('#'+blockId).removeClass('input-false'); + $('#'+blockId).find('div>i').removeClass('fa-exclamation-circle').addClass('fa-check-circle-o').css('color','#2ecc71'); + }); + + + $('#signup').on('click', function(){ + var btn = $(this); + var appid = btn.attr('data-appid'); + var signupJSON = {"artifactRepositories":[]}; + //generate raw data tree from connections + $.each(jsPlumb.getConnections(), function (idx, connection) { + var dataGen = $('#'+connection.targetId).attr('data-generated'); + if(dataGen!=undefined){ + var jsonContent = JSON.parse(decodeURIComponent(dataGen)); + signupJSON['artifactRepositories'].push(jsonContent); + } + + }); + + var formtype = 'signupapplication'; + btn.html("<i class='fa fa-spinner fa-spin'></i> Adding..."); + $.ajax({ + type: "POST", + url: caramel.context + "/controllers/applications/application_requests.jag", + dataType: 'json', + data: { "formPayload": JSON.stringify(signupJSON), "formtype": formtype, "applicationId": appid }, + success: function (data) { + if (data.status == 'error') { + var n = noty({text: data.message, layout: 'bottomRight', type: 'error'}); + } else if (data.status == 'warning') { + var n = noty({text: data.message, layout: 'bottomRight', type: 'warning'}); + } else { + var n = noty({text: data.message, layout: 'bottomRight', type: 'success'}); + window.setTimeout(function(){ + window.location.href = '../'; + }, 1500); + } + } + }) + .always(function () { + btn.html('Add Signup'); + }); + + }); + + + +}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs index 0c72fb9..d5b433c 100644 --- a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs @@ -123,6 +123,14 @@ id="details_list_{{applicationId}}" data-url="{{url ""}}/applications/{{applicationId}}/" > View </button> + {{#if multiTenant}} + {{#unless signUpsExist}} + <button class="btn btn-warning btn-lg hover-signup" type="button" + id="signup_{{applicationId}}" + data-url="{{url ""}}/applications/{{applicationId}}/signup" > Signup + </button> + {{/unless}} + {{/if}} </div> <div class="bottom-bar-wrapper"> <div class="bottom-bar"> @@ -132,7 +140,14 @@ id="details_{{applicationId}}" data-url="{{url ""}}/applications/{{applicationId}}/" > View </button> - + {{#if multiTenant}} + {{#unless signUpsExist}} + <button class="btn btn-warning btn-lg hover-signup" type="button" + id="signup_{{applicationId}}" + data-url="{{url ""}}/applications/{{applicationId}}/signup" > Signup + </button> + {{/unless}} + {{/if}} </div> {{else}} <div class="list-button" style="display: none;"> @@ -327,6 +342,10 @@ window.location = $(this).attr("data-url"); }); + $('.general-table').on('click', '.hover-signup', function (event) { + window.location = $(this).attr("data-url"); + }); + {{/if}} $('#deploy').click(function () { http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_signup.hbs ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_signup.hbs b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_signup.hbs new file mode 100644 index 0000000..6374190 --- /dev/null +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_signup.hbs @@ -0,0 +1,64 @@ +<!-- + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +--> + +<div id="centered"> + <div class="row title"> + <div class="title-main text-center"> + <h1>Application - {{applicationAlias}}</h1> + </div> + </div> + <div class='container' id='content'> + <div class='row'> + <div class='container text-center form-toolbar'> + <div class='col-md-1'> + + </div> + + <div class='col-md-11'> + <button class='btn btn-info btn-lg pull-right' type='button' id='signup' data-appid='{{applicationName}}'> Add Signup</button> + <button class='btn btn-default btn-lg pull-right button-gap' type='button' onclick='window.location.replace(document.referrer)'> Cancel</button> + + </div> + </div> + </div> + <div class="right-side"> + <div class="app-creator"> + <div id="whiteboard"> + + </div> + </div> + <div class="signup-default"> + <h4 class="center">Click on <i class="fa fa-exclamation-circle"></i> icon to add subscriptions</h4> + </div> + <div class="signup-details" style="display: none;"> + <button type="button" class="btn btn-primary" id="component-info-update" >Update</button> + <br/> + <div id="signup-details"> + + </div> + </div> + </div> + </div> + +</div> +<script> + var applicationJSON = {{{applicationJSON}}}; +</script> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/08f8963c/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js b/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js index 80d9dad..e5efbce 100644 --- a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js @@ -292,6 +292,66 @@ var render = function (theme, data, meta, require) { }); break; + case "applicationSignup": + theme('index', { + page_meta: [ + { + partial: 'index_title', + context: { + page_title: 'Apache Stratos - Application Managment', + page_description: 'Apache Stratos - Application Managment' + } + } + ], + header: [ + { + partial: 'index_header', + context: { + } + } + ], + sub_header: [ + { + partial: 'index_sub_header', + context: { + breadcrumbPathLevelOne: data.breadcrumbPathLevelOne, + breadcrumbPathLevelTwo: data.breadcrumbPathLevelTwo + } + } + ], + left_menu: [ + { + partial: 'index_left_menu', + context: { + left_menu: data.left_menu + } + } + ], + right_menu_help: [ + { + partial: 'index_right_menu_help', + context: { + + } + } + ], + content: [ + { + partial: 'applications_signup', + context: { + applicationName: data.applicationName, + applicationAlias: data.applicationAlias, + formContext: data.breadcrumbPathLevelTwo, + appName: data.appName, + applicationJSON: data.applicationJSON, + formTitle: data.formTitle + } + } + + ] + }); + break; + default: theme('index', { page_meta: [
