diff options
author | Adam Young <ayoung@redhat.com> | 2010-07-02 14:11:50 -0400 |
---|---|---|
committer | Adam Young <ayoung@redhat.com> | 2010-07-02 14:11:50 -0400 |
commit | e919bd515ed474d6d32d949f8d4507260b82363e (patch) | |
tree | f9ce60fb057791b0eca468b34180e4c34b809b2c | |
parent | cd90214c0eef9d0a13c450d42f4399beca47ffb4 (diff) | |
download | freeipa-e919bd515ed474d6d32d949f8d4507260b82363e.tar.gz freeipa-e919bd515ed474d6d32d949f8d4507260b82363e.tar.xz freeipa-e919bd515ed474d6d32d949f8d4507260b82363e.zip |
Refactored so the groups and users use the same code for search population.
-rw-r--r-- | web/group.js | 53 | ||||
-rw-r--r-- | web/groups.inc | 26 | ||||
-rw-r--r-- | web/ipa.xhtml | 2 | ||||
-rw-r--r-- | web/search.js | 62 | ||||
-rw-r--r-- | web/user-find.inc | 2 | ||||
-rw-r--r-- | web/user.js | 98 |
6 files changed, 123 insertions, 120 deletions
diff --git a/web/group.js b/web/group.js index 1125a8a89..481be4b53 100644 --- a/web/group.js +++ b/web/group.js @@ -1,9 +1,8 @@ -function groupSearchSuccess(json){ - $('#groupsTable tbody').html(""); - - for (var index = 0; index != json.result.result.length ; index ++){ - var group = json.result.result[index]; + +function setupGroupSearch(){ + + function renderGroupRow(group){ var row = "<tr>" +"<td><a href='ipa.xhtml?bodycontent=group.inc'>"+group.cn+"</a></td>" +"<td>"+group.gidnumber+"</td>" @@ -12,44 +11,30 @@ function groupSearchSuccess(json){ +"<td>None</td>" +"<td><a href='#'>Manage</a> b Delete</td>" +"</tr>"; - - $('#groupsTable tbody:last').append(row); + return row; } -}; + var columns + = [["Group Name","cn"], + ["GID", "gidnumber" ], + ["Description", "description" ], + ["Direct Members", ""], + ["Direct Subgroups", ""]]; -function setupGroupSearch(){ - + + var searchForm = new SearchForm("group_find", columns,'ipa.xhtml?bodycontent=group.inc', renderGroupRow); + + searchForm.buildColumnHeaders(); + + $("#findgroups").click(function(){ + executeSearch(searchForm); + }); $("#newgroup").click( function() { alert("New Group..."); }); - - - var jsonData = {"method":"group_find","params":[[""],{}],"id":0}; - - var jsonRequest = JSON.stringify(jsonData); - - if (true){ - var requesturl = "sampledata/grouplist.json"; - } - $("#findgroups").click( function() { - - $.ajax({ - beforeSend: function(xhrObj){ - xhrObj.setRequestHeader("Content-Type","application/json"); - xhrObj.setRequestHeader("Accept","application/json"); - }, - type: "POST", - url: requesturl, - processData: false, - data: jsonRequest, - dataType: "json", - success: groupSearchSuccess - }); - }); }
\ No newline at end of file diff --git a/web/groups.inc b/web/groups.inc index b5f26315c..9f5f86fd2 100644 --- a/web/groups.inc +++ b/web/groups.inc @@ -1,5 +1,3 @@ -<script type="text/javascript" src="sampledata/grouplist.js" /> -<script type="text/javascript" src="group.js" /> <script type="text/javascript"> $(document).ready(function(){ @@ -10,23 +8,17 @@ <div id="frame"> <div> <form> - <input type="text" /> + <input id="queryFilter" type="text"/> <a href="#" id="findgroups">Find Groups</a>| <a href="#" id="newgroup">New Group</a> </form> </div> - - <table id="groupsTable" border="1"> - <thead> - <tr> - <th>Group Name</th> - <th>GID</th> - <th>Description</th> - <th># Driect Members</th> - <th>Direct Subgroups</th> - <th>Actions</th> - </tr> - </thead> - <tbody></tbody> - </table> + + <div > + <table id="searchResultsTable" border="1"> + <thead></thead> + <tbody></tbody> + </table> + + </div> </div> diff --git a/web/ipa.xhtml b/web/ipa.xhtml index 26bc27e80..d060a82d8 100644 --- a/web/ipa.xhtml +++ b/web/ipa.xhtml @@ -16,7 +16,9 @@ rel="stylesheet" type="text/css" /> </style> <script type="text/javascript" src="pageparams.js" /> +<script type="text/javascript" src="search.js" /> <script type="text/javascript" src="user.js" /> +<script type="text/javascript" src="group.js" /> <script type="text/javascript"> diff --git a/web/search.js b/web/search.js new file mode 100644 index 000000000..9fc1ddc66 --- /dev/null +++ b/web/search.js @@ -0,0 +1,62 @@ + + +function SearchForm(method, cols, modAction,renderRow){ + this.method = method; + this.columns = cols; + this.modifyAction = modAction; + this.renderRow = renderRow; + + this.buildColumnHeaders = function (){ + var columnHeaders = "<tr>"; + for (var i =0 ; i != this.columns.length ;i++){ + columnHeaders += "<th>"; + columnHeaders += this.columns[i][0]; + columnHeaders += "</th>"; + } + columnHeaders += "<th>Actions</th>" + columnHeaders += "</tr>"; + $('#searchResultsTable thead:last').append(columnHeaders); + } + + this.searchSuccess = function (json){ + for (var index = 0; index != json.result.result.length; index++){ + var current = json.result.result[index]; + $('#searchResultsTable tbody:last').append(this.renderRow(current)); + } + } +} + +executeSearch = function(searchForm){ + var queryFilter = $("#queryFilter").val(); + + $('#usersTable tbody').html(""); + + var jsonData = {"method":searchForm.method,"params":[[queryFilter],{"all":"true"}],"id":0} + + var jsonRequest = JSON.stringify(jsonData); + + var requesturl = "/ipa/json"; + //For development without a webserver, just fetch a static file + //change this to true + if (true){ + //var requesturl = "sampledata/userlist.json"; + var requesturl = "sampledata/grouplist.json"; + + } + + $.ajax({ + beforeSend: function(xhrObj){ + xhrObj.setRequestHeader("Content-Type","application/json"); + xhrObj.setRequestHeader("Accept","application/json"); + }, + type: "POST", + url: requesturl, + processData: false, + data: jsonRequest, + dataType: "json", + success: function(json){ + searchForm.searchSuccess(json); + } + }); +} + diff --git a/web/user-find.inc b/web/user-find.inc index 684f201f1..c2f9ea9cf 100644 --- a/web/user-find.inc +++ b/web/user-find.inc @@ -8,7 +8,7 @@ <div><input id="queryFilter" type="text"/><input id="userquery" type="submit" value="find" />...............................................<a href="ipa.xhtml?bodycontent=user-edit.inc">New User</a></div> <div > - <table id="usersTable" border="1"> + <table id="searchResultsTable" border="1"> <thead></thead> <tbody></tbody> </table> diff --git a/web/user.js b/web/user.js index b2d6e529d..3d13ab219 100644 --- a/web/user.js +++ b/web/user.js @@ -1,75 +1,37 @@ -var columnNames = ["Name","Login","UID", "EMAIL", "Phone", "Job Title"]; -var columnFields = ["cn", "uid", "uidnumber","mail", "telephonenumber", "title"]; - +function setupUserSearch(){ -function buildColumnHeaders(){ - var columnHeaders = "<tr>"; - for (var i =0 ; i != columnNames.length ;i++){ - columnHeaders += "<th>"; - columnHeaders += columnNames[i]; - columnHeaders += "</th>"; + function renderUsersResultRow(current){ + var row = '<tr>'; + row += '<td><a href="'+this.modifyAction+'">'; + row += current[this.columns[0][1]]; + row += '</a></td>'; + for (var i = 1; i != this.columns.length ; i++){ + row += '<td>'; + row += current[this.columns[i][1]]; + row += '</td>'; + } + row += '<td>'; + row += '<a href="ipa.xhtml?bodycontent=user-edit.inc' + //TODO Put uid in here + row += '">[modify]</a>' + row += ' <a href="#">[delete]</a>' + row += '<a href="#">[clone]</a></td></tr>'; + return row; } - columnHeaders += "<th>Actions</th>" - columnHeaders += "</tr>"; - $('#usersTable thead:last').append(columnHeaders); - -} - -function setupUserSearch(){ - buildColumnHeaders(); + + var columns + = [["Name","cn"], + ["Login", "uid"], + ["UID", "uidnumber" ], + ["EMAIL", "mail"], + ["Phone", "telephonenumber"], + ["Job Title", "title"]]; + var searchForm = new SearchForm("user_find", columns,'ipa.xhtml?bodycontent=user-edit.inc', renderUsersResultRow); + + searchForm.buildColumnHeaders(); $("#userquery").click(function(){ - var queryFilter = $("#queryFilter").val(); - - $('#usersTable tbody').html(""); - - var jsonData = {"method":"user_find","params":[[queryFilter],{"all":"true"}],"id":0} - - var jsonRequest = JSON.stringify(jsonData); - - var requesturl = "/ipa/json"; - //For development without a webserver, just fetch a static file - //change this to true - if (true){ - var requesturl = "sampledata/userlist.json"; - } - - $.ajax({ - beforeSend: function(xhrObj){ - xhrObj.setRequestHeader("Content-Type","application/json"); - xhrObj.setRequestHeader("Accept","application/json"); - }, - type: "POST", - url: requesturl, - processData: false, - data: jsonRequest, - dataType: "json", - success: function(json){ - for (var index = 0; index != json.result.result.length; index++){ - var current = json.result.result[index]; - var row = '<tr>'; - - - row += '<td><a href="ipa.xhtml?bodycontent=user-edit.inc">'; - row += current[columnFields[0]]; - row += '</a></td>'; - - - for (var i = 1; i != columnFields.length ; i++){ - row += '<td>'; - row += current[columnFields[i]]; - row += '</td>'; - } - row += '<td>'; - row += '<a href="ipa.xhtml?bodycontent=user-edit.inc' - //TODO Put uid in here - row += '">[modify]</a>' - row += ' <a href="#">[delete]</a>' - row += '<a href="#">[clone]</a></td></tr>'; - $('#usersTable tbody:last').append(row); - } - } - }); + executeSearch(searchForm); }); }
\ No newline at end of file |