summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2010-08-19 20:48:21 -0400
committerAdam Young <ayoung@redhat.com>2010-08-19 20:49:14 -0400
commit12ee9365a7a08c7a45887b98f17a44c64d7eb5f0 (patch)
tree838143295e68b8c8e334272a12e682708b427032
parent9a160275351c5763209346466a331b06546ac0e0 (diff)
downloadfreeipa-12ee9365a7a08c7a45887b98f17a44c64d7eb5f0.tar.gz
freeipa-12ee9365a7a08c7a45887b98f17a44c64d7eb5f0.tar.xz
freeipa-12ee9365a7a08c7a45887b98f17a44c64d7eb5f0.zip
Changes the URL parsing from standard HTML params ( starting with ?)
to hash params ( starting with # ). User Details are now part of index.xhtml, ao one more .inc file has been removed. Updated commit to catch a few things that had been left out, including sampledata handling and updateing Makefile.am
-rw-r--r--install/static/Makefile.am2
-rw-r--r--install/static/details.js11
-rw-r--r--install/static/group-details.inc32
-rw-r--r--install/static/group.js51
-rw-r--r--install/static/index.xhtml37
-rw-r--r--install/static/ipa.css14
-rw-r--r--install/static/ipa.js21
-rw-r--r--install/static/navigation.js46
-rw-r--r--install/static/search.js86
-rw-r--r--install/static/user-details.inc27
-rw-r--r--install/static/user.js55
11 files changed, 216 insertions, 166 deletions
diff --git a/install/static/Makefile.am b/install/static/Makefile.am
index 762587179..8e1dc1bcf 100644
--- a/install/static/Makefile.am
+++ b/install/static/Makefile.am
@@ -11,7 +11,6 @@ app_DATA = \
ipa.css \
jquery.js \
group.js \
- group-details.inc \
host.js \
hostgroup.js \
index.xhtml \
@@ -23,7 +22,6 @@ app_DATA = \
details.js \
user.js \
user-add.inc \
- user-details.inc \
ipalogo.png \
gray-fade-line.png \
Mainnav-background.png \
diff --git a/install/static/details.js b/install/static/details.js
index d47cfe8b5..bdfafc0a8 100644
--- a/install/static/details.js
+++ b/install/static/details.js
@@ -39,7 +39,7 @@ var _ipa_load_on_fail_callback = null;
var ipa_details_cache = null;
-function ipa_details_load(pkey, on_win, on_fail)
+function ipa_details_load(pkey, on_win, on_fail,sampleData)
{
if (!pkey)
return;
@@ -49,8 +49,7 @@ function ipa_details_load(pkey, on_win, on_fail)
ipa_cmd(
'show', [pkey], {all: true}, _ipa_load_on_win, _ipa_load_on_fail,
- _ipa_obj_name
- );
+ _ipa_obj_name, sampleData );
}
function _ipa_load_on_win(data, text_status, xhr)
@@ -171,7 +170,9 @@ function ipa_details_create(dls, container)
for (var i = 0; i < dls.length; ++i) {
var d = dls[i];
- ipa_generate_dl(container.children('hr').last(), d[0], d[1], d[2]);
+
+ ipa_generate_dl($('#detail-lists hr').last(), d[0], d[1], d[2]);
+// ipa_generate_dl($("#detail-lists"), d[0], d[1], d[2]);
}
}
@@ -188,7 +189,6 @@ function ipa_generate_dl(jobj, id, name, dts)
jobj = jobj.next();
jobj.after(_ipa_dl_template.replace('I', id));
jobj = jobj.next();
- jobj.after('<hr />');
for (var i = 0; i < dts.length; ++i) {
var label = '';
@@ -203,6 +203,7 @@ function ipa_generate_dl(jobj, id, name, dts)
_ipa_dt_template.replace('T', dts[i][0]).replace('N', label)
);
}
+ jobj.after('<hr />');
}
/* HTML templates for ipa_details_display() */
diff --git a/install/static/group-details.inc b/install/static/group-details.inc
deleted file mode 100644
index 445042b8d..000000000
--- a/install/static/group-details.inc
+++ /dev/null
@@ -1,32 +0,0 @@
-<script type="text/javascript">
- $(document).ready(function(){
- load_object($('body'),'group');
- });
-</script>
-<h1>Managing group:</h1>
-<div id="buttons">
- <a href="dummy"><img id="butreset" src="but-reset.png" alt="Reset" /></a>
- <a href="dummy"><img id="butupdate" src="but-update.png" alt="Update" /></a>
-</div>
-<ul id="viewtype">
- <li id="viewcaption">View:</li>
- <li>
- <img src="but-selected.png" alt="" />
- Personal Details
- </li>
- <li>
- <img src="but-unselected.png" alt="" />
- <a href="memberof?pkey=${pkey}">Memberships</a>
- </li>
-</ul>
-<hr />
-
-<h2 onclick="h2_on_click(this)">&#8722; Group Details</h2>
-<dl id="identity" class="entryattrs">
- <dt title="cn">Group Name:</dt>
- <dt title="description">Description:</dt>
- <dt title="gidnumber">GID</dt>
-</dl>
-<hr />
-
-
diff --git a/install/static/group.js b/install/static/group.js
index eddb272c6..beb10879c 100644
--- a/install/static/group.js
+++ b/install/static/group.js
@@ -68,29 +68,60 @@ function setupAddGroup(){
}
-function setupGroupDetails(){
+var group_details_list =
+ [['identity', 'Group Details', [
+ ['cn', 'Group Name'],
+ ['description', 'Description'],
+ ['gidnumber', 'Group ID']]]];
- $('#search').css("visibility","hidden");
- $('#content').css("visibility","visible");
- $('#content').load("group-details.inc");
- sampleData = "sampledata/groupshow.json";
+function setupGroupDetails(group){
+
+ window.location.hash="#tab=user&facet=details&pkey="+group;
+
+ //re initialize global parse of parameters
+ qs = ipa_parse_qs();
+
+ //TODO make this work for more than just user details
+ user_details_lists;
+
+ showDetails();
+
+ ipa_details_init('group');
+ ipa_details_create(group_details_list, $('#details'));
+ ipa_details_load(qs['pkey'], on_win, null, "sampledata/groupshow.json");
+ $('h1').text('Managing group: ' + group);
}
+
+
+function renderGroupDetails(group)
+{
+
+}
+
+
+function renderGroupDetailColumn(current,cell){
+
+ $("<a/>",{
+ href:"#tab=group&facet=details&pkey="+current.cn,
+ html: ""+ current[this.column],
+ click: function(){ setupGroupDetails(current.cn)},
+ }).appendTo(cell);
+}
+
+
function setupGroupSearch(){
var columns = [
- {title:"Group Name", column:"cn",render: function(current,cell){
- renderDetailColumn(current,cell,current[this.column],"group");
- }},
+ {title:"Group Name", column:"cn",render: renderGroupDetailColumn},
{title:"GID", column:"gidnumber",render: renderSimpleColumn},
{title:"Description", column:"description",render: renderSimpleColumn}
];
- var groupSearchForm = new SearchForm("group", "find", columns);
+ var groupSearchForm = new SearchForm("group", "find", columns,"sampledata/grouplist.json");
$("#query").unbind();
$("#query").click(function(){
- sampleData = "sampledata/grouplist.json";
executeSearch(groupSearchForm);
});
$("#new").unbind();
diff --git a/install/static/index.xhtml b/install/static/index.xhtml
index e94e6d18e..935f226cd 100644
--- a/install/static/index.xhtml
+++ b/install/static/index.xhtml
@@ -16,7 +16,6 @@
</script>
<script type="text/javascript" src="ipa.js" />
- <script type="text/javascript" src="pageparams.js" />
<script type="text/javascript" src="navigation.js" />
<script type="text/javascript" src="sampledata/develop.js" />
@@ -34,7 +33,7 @@
$(document).ready(function(){
if (useSampleData)
- ipa_init(sampleData, buildNavigation);
+ ipa_init("sampledata/metadata.json", buildNavigation);
else
ipa_init(null, buildNavigation);
});
@@ -56,10 +55,40 @@
<div id="sub-nav">Edit: </div>
</div>
- <div id="content" border="1" style="visibility:hidden" >
+ <div id="content" border="1" style="display:none" >
</div>
- <div id="search" style="visibility:hidden">
+ <div id="details" style="display:none" >
+ <h1>Managing user:</h1>
+ <div id="buttons">
+ <a href="jslink" onclick="return (reset_on_click(this));">
+ <img id="butreset" src="but-reset.png" alt="Reset" />
+ </a>
+ <a href="jslink" onclick="return (update_on_click(this));">
+ <img id="butupdate" src="but-update.png" alt="Update" />
+ </a>
+ </div>
+
+ <ul id="viewtype">
+ <li id="viewcaption">View:</li>
+ <li>
+ <img src="but-selected.png" alt="" />
+ Identity Details
+ </li>
+ <li>
+ <img src="but-unselected.png" alt="" />
+ <a href="memberof?pkey=${pkey}">Memberships</a>
+ </li>
+ </ul>
+ <div id="detail-lists">
+ <hr />
+ </div>
+ <div id="backtotop">
+ <a href="#viewtype">Back to Top</a>
+ </div>
+ </div>
+
+ <div id="search" style="display:none">
<div class="searchControls" >
<span class="filter" >
<input id="queryFilter" type="text"/>
diff --git a/install/static/ipa.css b/install/static/ipa.css
index 54b29c75e..0a4083944 100644
--- a/install/static/ipa.css
+++ b/install/static/ipa.css
@@ -83,17 +83,17 @@ h1 {
margin-top: 18px;
}
-div#content {
+div#details {
float: left;
width: 100%;
}
-div#content ul#viewtype {
+div#details ul#viewtype {
padding-left: 20px;
}
-div#content ul#viewtype li {
+div#details ul#viewtype li {
color: #656565;
display: inline;
font-weight: bold;
@@ -106,20 +106,20 @@ div#content ul#viewtype li#viewcaption {
padding-right: 10px;
}
-div#content ul#viewtype li img {
+div#details ul#viewtype li img {
vertical-align: middle;
}
-div#content ul#viewtype li a {
+div#details ul#viewtype li a {
font-weight: normal;
}
-div#content div#buttons {
+div#details div#buttons {
float: right;
margin-right: 15px;
}
-div#content div#buttons img {
+div#details div#buttons img {
border: 0;
}
diff --git a/install/static/ipa.js b/install/static/ipa.js
index d1f9fe59c..1e3238364 100644
--- a/install/static/ipa.js
+++ b/install/static/ipa.js
@@ -30,6 +30,12 @@ var _ipa_init_on_win_callback = null;
/* initialize the IPA JSON-RPC helper
* arguments:
* url - JSON-RPC URL to use (optional) */
+
+/*Query String*/
+var qs;
+
+
+
function ipa_init(url, on_win)
{
if (!url)
@@ -65,12 +71,23 @@ function _ipa_load_objs(data, textStatus, xhr)
* win_callback - function to call if the JSON request succeeds
* fail_callback - function to call if the JSON request fails
* objname - name of an IPA object (optional) */
-function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
+function ipa_cmd(name, args, options, win_callback, fail_callback, objname,sampleData)
{
id = ipa_jsonrpc_id++;
if (objname)
name = objname + '_' + name;
+ if (useSampleData && sampleData){
+ var ajax_options = {
+ url: sampleData,
+ type: 'POST',
+ contentType: 'application/json',
+ dataType: 'json',
+ processData: false,
+ };
+ $.ajaxSetup(ajax_options);
+ }
+
var data = {
method: name,
params: [args, options],
@@ -96,7 +113,7 @@ function ipa_parse_qs(qs)
var dict = {};
if (!qs)
- qs = location.search.substring(1, location.search.length);
+ qs = location.hash.substring(1);
qs = qs.replace(/\+/g, ' ');
var args = qs.split('&');
diff --git a/install/static/navigation.js b/install/static/navigation.js
index 10c168149..93ee4215d 100644
--- a/install/static/navigation.js
+++ b/install/static/navigation.js
@@ -16,7 +16,7 @@ function unimplemented(facet){
}
function buildNavigation(){
- params= getPageParams();
+ params= ipa_parse_qs();
var tab = params["tab"];
if (!tab){
@@ -107,10 +107,9 @@ function buildNavigation(){
currentMain.setup(facet);
}
- sampleData = "sampledata/whoami.json";
var whoami = $.cookie("whoami");
if (whoami == null){
- ipa_cmd( 'whoami', [], {}, whoamiSuccess);
+ ipa_cmd( 'whoami', [], {}, whoamiSuccess, null,null, "sampledata/whoami.json");
}else{
setLoggedInText(whoami);
}
@@ -145,14 +144,49 @@ function setActiveSubtab(){
netgroup:setupNetgroup,
};
-
-
-
var subtabName = this.id.substring("subtab-".length);
$(".sub-nav-on").removeClass('sub-nav-on').addClass("sub-nav-off")
var active = "#span-subtab-"+subtabName;
$(active).removeClass('sub-nav-off').addClass("sub-nav-on")
setupFunctions[subtabName]();
+}
+
+function clearOld(){
+ $('#searchResultsTable thead').html("");
+ $('#searchResultsTable tfoot').html("");
+ $('#searchResultsTable tbody').find("tr").remove();
+ $("#searchButtons").html("");
+
+ $('#content').html("");
+
+ //remove old details
+ $('.entryattrs dd').remove();
+ $('#detail-lists').html("<hr/>");
+
+}
+
+
+
+function showSearch(){
+ $('#content').css("display","none");
+ $('#details').css("display","none");
+ clearOld();
+ $('#search').css("display","block");
+ $("#filter").css("display","block");
+}
+
+function showContent(){
+ $('#search').css("display","none");
+ $('#details').css("display","none");
+ clearOld();
+ $('#content').css("display","block");
+}
+
+function showDetails(){
+ $('#search').css("display","none");
+ $('#content').css("display","none");
+ clearOld();
+ $('#details').css("display","block");
}
diff --git a/install/static/search.js b/install/static/search.js
index de11f2eda..fbcec7867 100644
--- a/install/static/search.js
+++ b/install/static/search.js
@@ -2,33 +2,6 @@
var sampleData;
-function clearOld(){
- $('#searchResultsTable thead').html("");
- $('#searchResultsTable tfoot').html("");
- $('#searchResultsTable tbody').find("tr").remove();
- $('#content').html("");
-}
-
-function showSearch(){
- clearOld();
- $('#search').css("visibility","visible");
- $('#content').css("visibility","hidden");
- $('#search').css("display","block");
- $('#content').css("display","none");
- $("#filter").css("display","block");
- $("#searchButtons").html("");
-
-
-}
-
-function showContent(){
- clearOld();
- $('#search').css("visibility","hidden");
- $('#content').css("visibility","visible");
- $('#search').css("display","none");
- $('#content').css("display","block");
-}
-
//Columns is an array of items in the form
// {title, column, render}
//title: the the value that goes at the head of the column
@@ -52,15 +25,16 @@ function renderUnknownColumn(current,cell){
}
function renderDetailColumn(current,cell,pkey,obj){
- link = document.createElement("a");
- link.href= "?tab=" +obj+"&facet=details&pkey="+pkey;
- link.innerHTML = pkey;
- cell.appendChild(link);
+ $("<a/>",{
+ href:"#tab=user&facet=details&pkey="+pkey,
+ html: ""+ current[this.column],
+ click: function(){ setupUserDetails(current.uid)},
+ }).appendTo(cell);
}
-function SearchForm(obj, method, cols){
+function SearchForm(obj, method, cols, searchSampleData){
this.buildColumnHeaders = function (){
var columnHeaders = document.createElement("tr");
@@ -96,35 +70,55 @@ function SearchForm(obj, method, cols){
}
}
+ this.searchWithFilter = function(queryFilter){
+ var form = this;
+ window.location.hash="#tab="
+ +this.obj
+ +"&facet=search&criteria="
+ +queryFilter;
+
+ $('#searchResultsTable tbody').html("");
+ $('#searchResultsTable tbody').html("");
+ $('#searchResultsTable tfoot').html("");
+
+ ipa_cmd(this.method,
+ [queryFilter],
+ {"all":"true"},
+ function(json){
+ form.searchSuccess(json);
+ },
+ function(json){
+ alert("Search Failed");
+ },form.obj, form.searchSampleData);
+
+ }
+
this.obj = obj;
this.method = method;
this.columns = cols;
+ this.searchSampleData = searchSampleData;
showSearch();
$('#searchResultsTable thead').html("");
$('#searchResultsTable tbody').html("");
+ $('#searchResultsTable tfoot').html("");
+
$("#new").click(function(){
- location.href="?tab="+obj+"&facet=add";
+ location.href="#tab="+obj+"&facet=add";
});
this.buildColumnHeaders();
+
+ var params = ipa_parse_qs();
+
+ if (params["criteria"]){
+ this.searchWithFilter(params["criteria"]);
+ }
}
executeSearch = function(searchForm){
var queryFilter = $("#queryFilter").val();
-
- $('#searchResultsTable tbody').html("");
-
- ipa_cmd(searchForm.method,
- [queryFilter],
- {"all":"true"},
- function(json){
- searchForm.searchSuccess(json);
- },
- function(json){
- alert("Search Failed");
- },searchForm.obj);
-
+ searchForm.searchWithFilter(queryFilter);
}
diff --git a/install/static/user-details.inc b/install/static/user-details.inc
deleted file mode 100644
index 08b8be1ca..000000000
--- a/install/static/user-details.inc
+++ /dev/null
@@ -1,27 +0,0 @@
-<h1>Managing user:</h1>
-<div id="buttons">
- <a href="jslink" onclick="return (reset_on_click(this));">
- <img id="butreset" src="but-reset.png" alt="Reset" />
- </a>
- <a href="jslink" onclick="return (update_on_click(this));">
- <img id="butupdate" src="but-update.png" alt="Update" />
- </a>
-</div>
-
-<ul id="viewtype">
- <li id="viewcaption">View:</li>
- <li>
- <img src="but-selected.png" alt="" />
- Identity Details
- </li>
- <li>
- <img src="but-unselected.png" alt="" />
- <a href="memberof?pkey=${pkey}">Memberships</a>
- </li>
-</ul>
-<hr />
-
-<div id="backtotop">
- <a href="#viewtype">Back to Top</a>
-</div>
-
diff --git a/install/static/user.js b/install/static/user.js
index 9a58e31cf..2e87e6239 100644
--- a/install/static/user.js
+++ b/install/static/user.js
@@ -1,5 +1,4 @@
-var qs = ipa_parse_qs();
var user_details_lists = [
['identity', 'Identity Details', [
@@ -79,41 +78,46 @@ function addAnotherUser(){
function addEditUser(){
addUser(function (response){
- location.href="index.xhtml?tab=user&facet=details&pkey="+$("#login").val();
+ setupUserDetails($("#login").val());
});
}
function setupAddUser(){
-
showContent();
-
$('#content').load("user-add.inc");
}
+function setupUserDetails(user){
-function setupUserDetails(){
- showContent();
- sampleData = "sampledata/usershow.json";
- $('#content').load("user-details.inc", [], renderUserDetails);
+ window.location.hash="#tab=user&facet=details&pkey="+user;
+
+ //re initialize global parse of parameters
+ qs = ipa_parse_qs();
+
+ //TODO make this work for more than just user details
+ details_lists = user_details_lists;
+
+ showDetails();
+ renderUserDetails();
}
function renderUserDetails()
{
ipa_details_init('user');
- ipa_details_create(user_details_lists, $('#content'));
+ ipa_details_create(user_details_lists, $('#details'));
if (qs['principal']) {
ipa_cmd(
'find', [], {'krbprincipalname': qs['principal']},
- on_win_find, null, 'user'
- );
+ on_win_find, null, 'user', "sampledata/usershow.json");
+
return;
}
if (!qs['pkey'])
return;
- ipa_details_load(qs['pkey'], on_win);
+ ipa_details_load(qs['pkey'], on_win, null, "sampledata/usershow.json");
$('h1').text('Managing user: ' + qs['pkey']);
}
@@ -126,24 +130,24 @@ function renderUserLinks(current, cell){
cell.appendChild(link);
$("<a/>",{
- href:"?tab=user&facet=details&pkey="+current.uid,
+ href:"#tab=user&facet=details&pkey="+current.uid,
html: "[D]",
- click:setupUserDetails,
+ click: function(){ setupUserDetails(current.uid)},
}).appendTo(cell);
$("<a/>",{
- href: "#tab=user&facet=details&pkey="+current.uid,
+ href: "#tab=user&facet=group&pkey="+current.uid,
click:setupUserGroupMembership,
html: "[G]"
}).appendTo(cell);
$("<a/>",{
- href:"?tab=user&facet=netgroup&pkey="+current.uid,
+ href:"#tab=user&facet=netgroup&pkey="+current.uid,
html: "[N]"
}).appendTo(cell);
$("<a/>",{
- href:"?tab=user&facet=role&pkey="+current.uid,
+ href:"#tab=user&facet=role&pkey="+current.uid,
html:"[R]"
}).appendTo(cell);
}
@@ -151,9 +155,13 @@ function renderUserLinks(current, cell){
function renderUserDetailColumn(current,cell){
- renderDetailColumn(current,cell,current[this.column],"user");
-}
+ $("<a/>",{
+ href:"#tab=user&facet=details&pkey="+current.uid,
+ html: ""+ current[this.column],
+ click: function(){ setupUserDetails(current.uid)},
+ }).appendTo(cell);
+}
var columns = [
{title:"Name", column:"cn", render: renderSimpleColumn},
@@ -166,7 +174,7 @@ var columns = [
];
function setupUserSearch(){
- var userSearchForm = new SearchForm("user", "find", columns);
+ var userSearchForm = new SearchForm("user", "find", columns, "sampledata/userlist.json");
$("#query").unbind();
$("#query").click(function(){
@@ -184,8 +192,6 @@ function populateUserGroupFailure(){
alert("Can't find user");
}
-
-
function setupUserGroupEnrollmentSearch(pkey){
sampleData = "sampledata/usershow.json";
showContent();
@@ -224,7 +230,7 @@ function enrollUserInNextGroup(){
ipa_cmd( 'add_member',args, options ,
enrollUserInGroupSuccess,
- enrollUserInGroupFailure, 'group' );
+ enrollUserInGroupFailure );
}else{
setupUserGroupMembership();
}
@@ -259,8 +265,7 @@ function initializeUserGroupEnrollments(){
});
$("#query").click(function(){
- sampleData="sampledata/grouplist.json";
- ipa_cmd( 'find', [], {}, populateUserGroupSearch, populateUserGroupFailure, 'group' );
+ ipa_cmd( 'find', [], {}, populateUserGroupSearch, populateUserGroupFailure, 'group', "sampledata/grouplist.json" );
});