summaryrefslogtreecommitdiffstats
path: root/install
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2010-11-15 16:41:21 -0500
committerEndi Sukma Dewata <edewata@redhat.com>2010-11-17 21:50:03 -0500
commit632639b62ddad72e31daa62ef21f992299ec0b8e (patch)
tree0e846397e8d6136678112bf1bd6dd0616066e323 /install
parent7abd8c6ecb0a0aafeaac9a4baa1d5db96722a3ab (diff)
downloadfreeipa-632639b62ddad72e31daa62ef21f992299ec0b8e.tar.gz
freeipa-632639b62ddad72e31daa62ef21f992299ec0b8e.tar.xz
freeipa-632639b62ddad72e31daa62ef21f992299ec0b8e.zip
action select
if exactly one entity is selected, it enables the entity-facet links in the action panel, and sets the pkey in bbq to the pkey of the selected
Diffstat (limited to 'install')
-rw-r--r--install/static/entity.js73
-rw-r--r--install/static/index.html57
-rw-r--r--install/static/ipa.css21
-rw-r--r--install/static/ipa.js14
-rw-r--r--install/static/search.js24
-rw-r--r--install/static/test/entity_tests.js46
-rwxr-xr-xinstall/static/widget.js12
7 files changed, 208 insertions, 39 deletions
diff --git a/install/static/entity.js b/install/static/entity.js
index 74a07d009..e68ed3f2a 100644
--- a/install/static/entity.js
+++ b/install/static/entity.js
@@ -26,6 +26,7 @@ function ipa_facet(spec) {
spec = spec || {};
var that = {};
+ that.display_class = spec.display_class || 'entity-facet';
that.name = spec.name;
that.label = spec.label;
that._entity_name = spec.entity_name;
@@ -290,11 +291,16 @@ function ipa_details_only_setup(container){
ipa_entity_setup.call(this, container, 'details');
}
+function ipa_current_facet(entity){
+ return $.bbq.getState(entity.name + '-facet', true) || entity.default_facet || 'search';
+}
+
function ipa_entity_setup(container) {
var entity = this;
- var facet_name = $.bbq.getState(entity.name + '-facet', true) || entity.default_facet || 'search';
+ var facet_name = ipa_current_facet(entity);
+
var facet = entity.get_facet(facet_name);
if (!facet) return;
@@ -321,54 +327,69 @@ function ipa_entity_setup(container) {
function action_panel(entity_name){
+
+ function build_link(other_facet,label,other_entity){
+ var li = $('<li/>', {
+ "class" : other_facet.display_class,
+ title: other_entity,
+ text: label,
+ click: function(entity_name, other_facet_name) {
+ return function() {
+ if($(this).hasClass('entity-facet-disabled')){
+ return false;
+ }
+ var this_pkey = $('.action-panel input[id=pkey]').val();
+ IPA.switch_and_show_page(
+ entity_name, other_facet_name,
+ this_pkey, other_entity);
+
+ return false;
+ };
+ }(entity_name, other_facet_name)
+ });
+ return li;
+ }
+
var div = $('<div/>', {
"class":"action-panel",
html: $('<h3>Actions</h3>')
});
+
+ /*Note, for debugging purposes, it is useful to set var pkey_type = 'text';*/
+ var pkey_type = 'hidden';
+ $('<input/>',
+ {'type': pkey_type,
+ id:'pkey',
+ name:'pkey'}).appendTo(div);
+
var ul = $('<ul/>', {'class': 'action'}).appendTo(div);
var entity = IPA.get_entity(entity_name);
+ var facet_name = ipa_current_facet(entity);
for (var i=0; i<entity.facets.length; i++) {
var other_facet = entity.facets[i];
- var facet_name = other_facet.name;
+ var other_facet_name = other_facet.name;
if (other_facet.label) {
-
- var label = other_facet.label;
-
- ul.append($('<li/>', {
- title: other_facet.name,
- text: label,
- click: function(entity_name, facet_name) {
- return function() {
- IPA.show_page(entity_name, facet_name);
- };
- }(entity_name, facet_name)
- }));
-
+ ul.append(build_link(other_facet,other_facet.label));
} else { // For now empty label indicates an association facet
-
var attribute_members = IPA.metadata[entity_name].attribute_members;
for (var attribute_member in attribute_members) {
var other_entities = attribute_members[attribute_member];
for (var j = 0; j < other_entities.length; j++) {
var other_entity = other_entities[j];
var label = IPA.metadata[other_entity].label;
-
- ul.append($('<li/>', {
- title: other_entity,
- text: label,
- click: function(entity_name, facet_name, other_entity) {
- return function() {
- IPA.show_page(entity_name, facet_name, other_entity);
- };
- }(entity_name, facet_name, other_entity)
- }));
+ ul.append(build_link(other_facet,label,other_entity));
}
}
}
}
+ /*When we land on the search page, disable all facets
+ that require a pkey until one is selected*/
+ if (facet_name === 'search'){
+ $('.entity-facet', div).addClass('entity-facet-disabled');
+ }
return div;
}
diff --git a/install/static/index.html b/install/static/index.html
new file mode 100644
index 000000000..73a84caa7
--- /dev/null
+++ b/install/static/index.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+ <title>IPA: Identity Policy Audit</title>
+
+ <script type="text/javascript" src="json2.js"></script>
+ <script type="text/javascript" src="jquery.js"></script>
+ <script type="text/javascript" src="jquery.cookie.js"></script>
+ <script type="text/javascript" src="jquery-ui.js"></script>
+ <script type="text/javascript" src="jquery.ba-bbq.js"></script>
+
+ <script type="text/javascript" src="ipa.js"></script>
+ <script type="text/javascript" src="widget.js"></script>
+ <script type="text/javascript" src="search.js"></script>
+ <script type="text/javascript" src="details.js"></script>
+ <script type="text/javascript" src="add.js"></script>
+ <script type="text/javascript" src="associate.js"></script>
+ <script type="text/javascript" src="entity.js"></script>
+ <script type="text/javascript" src="navigation.js"></script>
+
+ <script type="text/javascript" src="certificate.js"></script>
+ <script type="text/javascript" src="user.js"></script>
+ <script type="text/javascript" src="group.js"></script>
+ <script type="text/javascript" src="hbac.js"></script>
+ <script type="text/javascript" src="hbacsvc.js"></script>
+ <script type="text/javascript" src="hbacsvcgroup.js"></script>
+ <script type="text/javascript" src="host.js"></script>
+ <script type="text/javascript" src="hostgroup.js"></script>
+ <script type="text/javascript" src="netgroup.js"></script>
+ <script type="text/javascript" src="service.js"></script>
+ <script type="text/javascript" src="serverconfig.js"></script>
+ <script type="text/javascript" src="policy.js"></script>
+
+
+ <script type="text/javascript" src="develop.js"></script>
+ <script type="text/javascript" src="webui.js"></script>
+
+ <link rel="stylesheet" type="text/css" href="jquery-ui.css" />
+ <link rel="stylesheet" type="text/css" href="ipa.css" />
+</head>
+
+<body>
+ <div class="header" >
+ <span class="header-logo">
+ <a href="#"><img src="ipalogo.png" /></a>
+ </span>
+ <span id="loggedinas" class="header-loggedinas">
+ <a href="#"><span id="login_header">Logged in as</span>: <strong>user@FREEIP.ORG</strong></a>
+ </span>
+ </div>
+
+ <div id="navigation" class="tabs"></div>
+</body>
+
+</html>
+
diff --git a/install/static/ipa.css b/install/static/ipa.css
index 3843424fd..58428ebe4 100644
--- a/install/static/ipa.css
+++ b/install/static/ipa.css
@@ -289,7 +289,6 @@ span.main-separator{
.action-panel {
position:relative;
-
left: -1.2em;
border-width: thin;
border-style: solid;
@@ -313,6 +312,26 @@ span.main-separator{
padding: 0.2em;
}
+.action-panel li.search-facet {
+ color: black;
+ text-decoration: underline;
+ cursor: pointer;
+}
+
+.action-panel li.entity-facet {
+ color: black;
+ text-decoration: underline;
+ cursor: pointer;
+}
+
+.action-panel li.entity-facet-disabled {
+ color: gray;
+ cursor: default;
+ text-decoration: none;
+}
+
+
+
.client {
margin-top: 0.4em;
float: left;
diff --git a/install/static/ipa.js b/install/static/ipa.js
index 4a01d9fb8..6ba8b67ec 100644
--- a/install/static/ipa.js
+++ b/install/static/ipa.js
@@ -101,6 +101,7 @@ var IPA = ( function () {
that.entities_by_name[entity.name] = entity;
};
+
that.show_page = function (entity_name, facet_name, other_entity) {
var state = {};
@@ -109,6 +110,19 @@ var IPA = ( function () {
$.bbq.pushState(state);
};
+ that.switch_and_show_page = function (
+ this_entity, facet_name, pkey, other_entity) {
+ if (!pkey){
+ that.show_page(this_entity, facet_name, other_entity);
+ return;
+ }
+ var state = {};
+ state[this_entity+'-pkey'] = pkey;
+ state[this_entity + '-facet'] = facet_name;
+ state[this_entity + '-enroll'] = other_entity ? other_entity : '';
+ $.bbq.pushState(state);
+ };
+
return that;
}());
diff --git a/install/static/search.js b/install/static/search.js
index 040508734..a107209b1 100644
--- a/install/static/search.js
+++ b/install/static/search.js
@@ -100,6 +100,28 @@ function ipa_search_widget(spec) {
return false;
};
+ that.select_changed = function(){
+ var count = 0;
+ var pkey;
+ $('input[name=select]:checked', that.tbody).each(function(input){
+ count += 1;
+ pkey = $(this).val();
+ });
+ if(count == 1){
+ $('.action-panel li.entity-facet').
+ removeClass('entity-facet-disabled');
+ var state = {};
+ $('.action-panel input[id=pkey]').val(pkey);
+ }else{
+ $('.action-panel li.entity-facet').
+ addClass('entity-facet-disabled');
+ $('.action-panel input').val(null);
+
+ }
+ return false;
+ }
+
+
that.remove = function(container) {
var values = that.get_selected_values();
@@ -199,6 +221,8 @@ function ipa_search_facet(spec) {
spec = spec || {};
+ spec.display_class = 'search-facet';
+
var that = ipa_facet(spec);
that.init = spec.init || init;
diff --git a/install/static/test/entity_tests.js b/install/static/test/entity_tests.js
index 970f9a89b..c431031de 100644
--- a/install/static/test/entity_tests.js
+++ b/install/static/test/entity_tests.js
@@ -63,7 +63,7 @@ test('Testing ipa_entity_set_search_definition().', function() {
test('Testing ipa_facet_setup_views().', function() {
- var orig_show_page = IPA.show_page;
+ var orig_switch_and_show_page = IPA.switch_and_show_page;
IPA.ajax_options.async = false;
IPA.init(
@@ -83,6 +83,12 @@ test('Testing ipa_facet_setup_views().', function() {
IPA.add_entity(entity);
+ entity.add_facet(ipa_search_facet({
+ 'name': 'search',
+ 'label': 'Search'
+ }));
+
+
var facet = ipa_association_facet({
'name': 'associate'
});
@@ -91,7 +97,7 @@ test('Testing ipa_facet_setup_views().', function() {
var container = $('<div/>');
var counter = 0;
- IPA.show_page = function(entity_name, facet_name, other_entity) {
+ IPA.switch_and_show_page = function(entity_name, facet_name, other_entity) {
counter++;
};
@@ -102,33 +108,49 @@ test('Testing ipa_facet_setup_views().', function() {
var views = list.children();
equals(
- views.length, 4,
+ views.length, 5,
'Checking number of views'
);
facet = views.first();
+ ok( facet.hasClass('entity-search',
+ 'Checking the search facet'
+ );
+
+ facet = facet.next();
+
var attribute_members = IPA.metadata['user'].attribute_members;
for (attribute_member in attribute_members) {
var objects = attribute_members[attribute_member];
for (var i = 0; i < objects.length; i++) {
var object = objects[i];
-
equals(
facet.attr('title'), object,
'Checking the '+object+' facet'
);
-
- facet.click();
-
facet = facet.next();
}
}
- equals(
- counter, 4,
- 'Checking callback invocations'
- );
+ var action_panel = $('.action-panel', container);
+ ok(action_panel.length, 'action panel exists');
+ var pkey_input = $('input[name=pkey]', action_panel);
+ ok(pkey_input.length,'pkey input exists');
+ var search_facets = $('li.search-facet', action_panel);
+ equals(search_facets.length,1,'one search facet in action panel');
+ var entity_facets = $('li.entity-facet', action_panel);
+ equals(entity_facets.length,4,'4 entity facets in action panel');
- IPA.show_page = orig_show_page;
+
+ for ( var entity_facet = entity_facets.first();
+ entity_facet.length;
+ entity_facet = entity_facet.next()){
+ entity_facet.click();
+ }
+
+// equals(4, counter,'four clicks');
+
+ IPA.switch_and_show_page = orig_switch_and_show_page;
});
+
diff --git a/install/static/widget.js b/install/static/widget.js
index 84b1d9aeb..1b99831e9 100755
--- a/install/static/widget.js
+++ b/install/static/widget.js
@@ -544,6 +544,11 @@ function ipa_table_widget(spec) {
}).appendTo(td);
};
+
+ that.select_changed = function(){
+ }
+
+
that.setup = function(container) {
that.widget_setup(container);
@@ -563,6 +568,8 @@ function ipa_table_widget(spec) {
for (var i=0; i<checkboxes.length; i++) {
checkboxes[i].checked = checked;
}
+ that.select_changed();
+ return false;
});
that.row = that.tbody.children().first();
@@ -627,6 +634,11 @@ function ipa_table_widget(spec) {
if (column.primary_key) {
// set checkbox value
$('input[name="select"]', tr).val(value);
+
+ $('input[name="select"]', tr).click(function(){
+ that.select_changed();
+ });
+
}
column.setup(tr, name, value, record);