1
0
mirror of https://github.com/dkmstr/openuds.git synced 2024-12-22 13:34:04 +03:00

Adding "new group" functional form

This commit is contained in:
Adolfo Gómez 2014-02-04 09:43:53 +00:00
parent b0756d8e3e
commit 83b8c474bd
12 changed files with 1438 additions and 1227 deletions

View File

@ -1,3 +1,3 @@
eclipse.preferences.version=1
excluded=//*.min.js\://PluginDetect_Java.js
excluded=//*.min.js\://PluginDetect_Java.js\://handlebars*.js
included=//*.js

View File

@ -29,7 +29,7 @@ function minify_admin() {
'FileSaver',
'ZeroClipboard',
'dataTables.bootstrap',
'handlebars-v1.1.2',
'handlebars-v1.3.0',
// Api
'api',
'api-tools',

View File

@ -37,6 +37,6 @@ from uds import REST
urlpatterns = patterns('uds.admin.views',
(r'^$', 'index'),
(r'^tmpl/(?P<template>[a-zA-Z0-9]*)$', 'tmpl'),
(r'^tmpl/(?P<template>[a-zA-Z0-9_-]*)$', 'tmpl'),
(r'^sample$', 'sample'),
)

View File

@ -30,18 +30,14 @@
'''
from __future__ import unicode_literals
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden
from django.http import HttpResponse, HttpResponseForbidden
from django.template import RequestContext, loader
from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import render
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from uds.core.auths.auth import webLoginRequired
from uds.core.util import log
from uds.core.util.Decorators import denyBrowsers
from uds.web import errors
import logging

View File

@ -33,6 +33,5 @@ gui.dashboard.link = function(event) {
});
gui.tools.fix3dButtons('#test');
});
};

View File

@ -114,7 +114,7 @@ gui.servicesPools.link = function(event) {
/*
* Services pools part
*/
var tableId = gui.servicesPools.table({
var servicesPoolsTable = gui.servicesPools.table({
container : 'deployed-services-placeholder',
rowSelect : 'single',
buttons : [ 'new', 'edit', 'delete', { text: gettext('Test'), css: 'disabled', click: testClick, select: testSelect }, 'xls' ],
@ -184,6 +184,39 @@ gui.servicesPools.link = function(event) {
container : 'groups-placeholder',
rowSelect : 'single',
buttons : [ 'new', 'delete', 'xls' ],
onNew: function(value, event, table, refreshFnc) {
api.templates.get('pool_add_group', function(tmpl){
api.authenticators.overview(function(data){
var modalId = gui.launchModal(gettext('Add group'),api.templates.evaluate(tmpl, {
auths: data,
}));
$(modalId + ' #id_auth_select').on('change', function(event){
var auth = $(modalId + ' #id_auth_select').val();
api.authenticators.detail(auth, 'groups').overview(function(data){
var $select = $(modalId + ' #id_group_select');
$select.empty();
$.each(data, function(undefined, value){
$select.append('<option value="' + value.id + '">' + value.name + '</option>');
});
// Refresh selectpicker if item is such
if($select.hasClass('selectpicker'))
$select.selectpicker('refresh');
});
});
$(modalId + ' .button-accept').on('click', function(event) {
alert(event);
});
// Makes form "beautyfull" :-)
gui.forms.beautify(modalId);
});
});
},
onData : function(data) {
$.each(data, function(undefined, value){
value.group_name = '<b>' + value.auth_name + '</b>\\' + value.name;

View File

@ -169,6 +169,20 @@
return res;
};
// Beautifies a form
gui.forms.beautify = function(formSelector) {
// For "beauty" switches, initialize them now
$(formSelector + ' [type="checkbox"]').bootstrapSwitch();
// Activate "cool" selects
$(formSelector + ' .selectpicker').selectpicker();
// TEST: cooller on mobile devices
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
$(formSelector + ' .selectpicker').selectpicker('mobile');
}
// Activate tooltips
$(formSelector + ' [data-toggle="tooltip"]').tooltip({delay: {show: 1000, hide: 100}, placement: 'auto right'});
};
// Options has this keys:
// title
// fields
@ -217,16 +231,7 @@
// Get form
var $form = $(id + ' form');
// For "beauty" switches, initialize them now
$(id + ' [type="checkbox"]').bootstrapSwitch();
// Activate "cool" selects
$(id + ' .selectpicker').selectpicker();
// TEST: cooller on mobile devices
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
$(id + ' .selectpicker').selectpicker('mobile');
}
// Activate tooltips
$(id + ' [data-toggle="tooltip"]').tooltip({delay: {show: 1000, hide: 100}, placement: 'auto right'});
gui.forms.beautify(id);
// Validation
$form.validate({

View File

@ -89,6 +89,9 @@
return '<div class="row"><div class="col-lg-12"><ol class="breadcrumb">' + list + "</ol></div></div>";
};
// By default, actionButton has class "button-accept", so you can use returned id + this class to select it
// and do whatever is needed (for example, insert an "on click" event (this method returns id without '#'
// Example: $('#' + id + ' .button-accept').on('click', ...
gui.modal = function(id, title, content, options) {
options = options || {};
return api.templates.evaluate('tmpl_comp_modal', {
@ -102,6 +105,7 @@
});
};
// As previous, this creates the modal and shows it. in this case, the id of the modal returned already has '#'
gui.launchModal = function(title, content, options) {
options = options || {};
var id = gui.genRamdonId('modal-'); // Get a random ID for this modal

View File

@ -88,7 +88,7 @@
<script src="{% get_static_prefix %}adm/js/dataTables.bootstrap.js"></script>
<!-- template engine -->
<script src="{% get_static_prefix %}adm/js/handlebars-v1.1.2.js"></script>
<script src="{% get_static_prefix %}adm/js/handlebars-v1.3.0.js"></script>
<!-- First all api related stuff -->
<script src="{% get_static_prefix %}adm/js/api.js"></script>

View File

@ -25,8 +25,6 @@
<ul class="dropdown-menu">
<li><a class="lnk-configuration" href="#">{% trans 'Configuration' %}</a></li>
<li><a class="lnk-clear_cache" href="#">{% trans 'Flush cache' %}</a></li>
<li><a href="#">Third Item</a></li>
<li><a href="#">Last Item</a></li>
</ul>
</li>
</ul>

View File

@ -0,0 +1,25 @@
{% load i18n %}
{% verbatim %}
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="id_auth_select" class="col-sm-2 control-label">{% endverbatim %}{% trans 'Authenticator' %}{% verbatim %}</label>
<div class="col-sm-10">
<select id="id_auth_select" name="auth" class="selectpicker show-menu-arrow show-tick modal_field_data" data-style="btn-default" data-width="100%">
<option value="-1"></option>
{{# each auths }}
<option value="{{ id }}">{{ name }}</option>
{{/ each }}
</select>
</div>
</div>
<div class="form-group">
<label for="id_group_select" class="col-sm-2 control-label">{% endverbatim %}{% trans 'Group' %}{% verbatim %}</label>
<div class="col-sm-10">
<select id="id_group_select" name="group" class="selectpicker show-menu-arrow show-tick modal_field_data" data-style="btn-default" data-width="100%">
</select>
</div>
</div>
</form>
{% endverbatim %}