Skip to content

Commit 5d60430

Browse files
committed
Merge pull request #12 from whytheplatypus/master
class list 3
2 parents f3bc0a2 + 0531706 commit 5d60430

File tree

126 files changed

+31852
-16
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+31852
-16
lines changed

conf/templates/math3/lbtwo.template

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,5 +124,10 @@
124124
WeBWorK &#169; 2000-2007 <a href="http://openwebwork.sf.net/">The WeBWorK Project</a>
125125
</div>
126126
</footer>
127+
128+
<!--#if can="output_JS"-->
129+
<!--#output_JS-->
130+
<!--#endif-->
131+
127132
</body>
128133
</html>

htdocs/css/userlist.css

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.Body{
2+
padding: 20px;
3+
}
4+
#users_table { border-collapse: collapse; border: 1px solid #CCB; width: 800px; }
5+
#users_table td, table.testgrid th { padding: 5px; border: 1px solid #E0E0E0; }
6+
#users_table th { background: #E5E5E5; text-align: left; font-size: 90%; }
7+
#users_table td {font-size: 90%;}

htdocs/js/apps/LibraryBrowser/library_browser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ $(function () {
8686
}
8787

8888
this.el.id = this.model.cid;
89-
89+
this.el.setAttribute('data-path', this.model.get('path'));
9090

9191

9292
return this;
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
2+
3+
4+
5+
$(function(){
6+
7+
// get usernames and keys from hidden variables and set up webwork object:
8+
var myUser = document.getElementById("hidden_user").value;
9+
var mySessionKey = document.getElementById("hidden_key").value;
10+
var myCourseID = document.getElementById("hidden_courseID").value;
11+
// check to make sure that our credentials are available.
12+
if (myUser && mySessionKey && myCourseID) {
13+
webwork.requestObject.user = myUser;
14+
webwork.requestObject.session_key = mySessionKey;
15+
webwork.requestObject.courseID = myCourseID;
16+
} else {
17+
alert("missing hidden credentials: user "
18+
+ myUser + " session_key " + mySessionKey
19+
+ " courseID" + myCourseID, "alert-error");
20+
}
21+
22+
23+
24+
var UserListView = Backbone.View.extend({
25+
initialize: function(){
26+
27+
this.setElement(new EditableGrid("UserListTable", {
28+
enableSort: true
29+
}));
30+
// we build and load the metadata in Javascript
31+
this.el.load({ metadata: [
32+
{ name: "Select", datatype: "boolean", editable: true},
33+
{ label: "Login Name", name: "user_id", datatype: "string", editable: false },
34+
{ name: "Login Status", datatype: "string", editable: false },
35+
{ name: "Assigned Sets", datatype: "integer", editable: false },
36+
{ label: "First Name", name: "first_name", datatype: "string", editable: true },
37+
{ label: "Last Name", name:"last_name", datatype: "string", editable: true },
38+
{ label: "Email Address", name: "email_address", datatype: "string", editable: true },
39+
{ label: "Student ID", name: "student_id", datatype: "string", editable: true },
40+
{ label: "Status", name: "status", datatype: "string", editable: true,
41+
values : {
42+
"en":"Enrolled",
43+
"noten":"Not Enrolled"
44+
}
45+
},
46+
{ label: "Section", name: "section", datatype: "integer", editable: true },
47+
{ label: "Recitation", name: "recitation", datatype: "integer", editable: true },
48+
{ label: "Comment", name: "comment", datatype: "string", editable: true },
49+
{ label: "Permission Level", name: "permission", datatype: "integer", editable: true,
50+
values : {
51+
"-5":"guest","0":"Student","2":"login proctor",
52+
"3":"grade proctor","5":"T.A.", "10": "Professor",
53+
"20":"Admininistrator"
54+
}
55+
},
56+
{ name: "Take Action", datatype: "string", editable: true,
57+
values: {"action0":"Take Action","action1":"Change Password",
58+
"action2":"Delete User","action3":"Act as User",
59+
"action4":"Student Progess","action5":"Email Student"}
60+
}
61+
], data: [{id:0, values:{}}]});
62+
this.el.renderGrid('users_table', 'testgrid');
63+
var self = this;
64+
this.el.modelChanged = function(rowIndex, columnIndex, oldValue, newValue) {
65+
var cid = self.el.getRowId(rowIndex);
66+
var property = self.el.getColumnName(columnIndex);
67+
var editedModel = self.model.getByCid(cid);
68+
if(property == 'permission'){
69+
newValue = {name: "", value: newValue};
70+
}
71+
editedModel.set(property, newValue);
72+
editedModel.update();
73+
console.log(rowIndex);
74+
console.log(columnIndex);
75+
console.log(oldValue);
76+
console.log(newValue);
77+
}
78+
79+
this.model.on('reset', function(){
80+
while(self.el.getRowCount() > 1){
81+
self.el.remove(1);
82+
}
83+
self.addAll();
84+
}, this);
85+
this.model.on('all', this.render, this);
86+
this.model.fetch();
87+
88+
89+
document.getElementById("filter").addEventListener("keyup", function(){self.el.filter(document.getElementById("filter").value)}, false);
90+
},
91+
92+
render: function(){
93+
this.el.refreshGrid();
94+
95+
},
96+
97+
addOne: function(user){
98+
var userInfo = user.toJSON();
99+
userInfo.permission = ""+userInfo.permission.value;
100+
this.el.append(user.cid, userInfo);
101+
},
102+
103+
addAll: function(){
104+
var self = this;
105+
this.model.each(function(user){self.addOne(user)});
106+
}
107+
108+
109+
});
110+
111+
var userList = new webwork.UserList;
112+
113+
var App = new UserListView({model: userList});
114+
115+
// then we attach to the HTML table and render it
116+
//editableGrid.attachToHTMLTable('cltable');
117+
118+
119+
//userList.fetch();
120+
/*var users = new Array();
121+
for(var i = 0; i < editableGrid.getRowCount(); i++){
122+
var atts = editableGrid.getRowValues(i);
123+
delete atts['Take Action'];
124+
console.log(atts);
125+
users.push(atts);
126+
}
127+
userList.reset(users, {silent: true});*/
128+
});
129+
130+
131+
/*
132+
window.onload = function()
133+
{
134+
135+
136+
// update paginator whenever the table is rendered (after a sort, filter, page change, etc.)
137+
// tableRendered = function() { this.updatePaginator(); };
138+
139+
// set active (stored) filter if any
140+
// _$('filter').value = currentFilter ? currentFilter : '';
141+
142+
// filter when something is typed into filter
143+
// _$('filter').onkeyup = function() { editableGrid.filter(_$('filter').value); };
144+
145+
146+
147+
} */

0 commit comments

Comments
 (0)