summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2010-07-02 14:11:50 -0400
committerAdam Young <ayoung@redhat.com>2010-07-02 14:11:50 -0400
commite919bd515ed474d6d32d949f8d4507260b82363e (patch)
treef9ce60fb057791b0eca468b34180e4c34b809b2c
parentcd90214c0eef9d0a13c450d42f4399beca47ffb4 (diff)
downloadfreeipa-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.js53
-rw-r--r--web/groups.inc26
-rw-r--r--web/ipa.xhtml2
-rw-r--r--web/search.js62
-rw-r--r--web/user-find.inc2
-rw-r--r--web/user.js98
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