Skip to content

Commit

Permalink
Move JS code to wiki.js
Browse files Browse the repository at this point in the history
  • Loading branch information
nilsonsfj committed Nov 21, 2008
1 parent 90f4b29 commit 0868e1e
Show file tree
Hide file tree
Showing 3 changed files with 122 additions and 101 deletions.
55 changes: 7 additions & 48 deletions root/base/admin/role_form.tt
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
<script type="text/javascript">
var role_form = new MojoMojo.RoleForm({
user_search_url: "[% c.uri_for('/.jsrpc/usersearch') %]"
});
role_form.setup_autocomplete('member_input');
</script>
<form class="role_form standard_form" action="" method="post">

<fieldset class="fields">
Expand Down Expand Up @@ -27,7 +33,7 @@
<li class="member">
[% member.login %]
<input type="hidden" name="role_members" value="[% member.id %]" />
<a class="clickable" onclick="remove_member(this);">[remove]</a>
<a class="clickable" onclick="role_form.remove_member(this);">[remove]</a>
</li>
[% END %]
[% END %]
Expand All @@ -40,51 +46,4 @@
</fieldset>
</form>

<script type="text/javascript">

function remove_member(link) {
var li = link.parentNode;
var list = li.parentNode;
list.removeChild(li);

var remaining = list.getElementsByTagName('li');
if (remaining.length == 1) {
$(remaining[0]).removeClass('hide');
}
}

function select_item(li) {
$("#member_input").get(0).value = '';

// check if it's already added
if ($("#role_members li.member input[value='" + li.extra[0] + "']").length == 0) {
$("#role_members").append(
'<li class="member">' +
li.selectValue +
'<input type="hidden" name="role_members" value="' + li.extra[0] + '"/> ' +
'<a class="clickable" onclick="remove_member(this);">[remove]</a>' +
'</li>'
);
$("#role_members li.empty").addClass('hide');
}
}
function format_item(row) {
return row[0];
}

$(document).ready(function() {
$("#member_input").autocomplete(
"[% c.uri_for('/.jsrpc/usersearch') %]",
{
minChars: 1,
matchSubset: 1,
matchContains: 1,
cacheLength: 10,
onItemSelect: select_item,
formatItem: format_item,
selectOnly: 1
}
);
});

</script>
65 changes: 12 additions & 53 deletions root/base/page/permissions.tt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,13 @@ None.

[% IF user.is_admin %]

<script type="text/javascript">
var editor = new MojoMojo.PermissionsEditor({
clear_url: "[% c.uri_for('jsrpc/clear_permissions') %]",
set_url: "[% c.uri_for('jsrpc/set_permissions') %]"
});
</script>

<h4>Permissions for this page:</h4>
<table>
<tr>
Expand All @@ -45,67 +52,19 @@ None.
<td class="center"><input type="checkbox" name="subpages"[% IF perm.subpages %] checked="checked"[% END %] disabled="disabled"/></td>
<td>
<input type="hidden" name="role_name" value="[% perm.role_name %]"/>
<a class="clickable" onclick="enable_edit(this);">Edit</a>
<a class="clickable hide" onclick="save_edit(this);">Save</a>
<a class="clickable" onclick="editor.enable_edit(this);">Edit</a>
<a class="clickable hide" onclick="editor.save_changes(this);">Save</a>
<span[% UNLESS perm.inherited %] class="hide"[% END %]>
/
<a class="clickable[% UNLESS perm.inherited %] hide[% END %]" onclick="use_inherited(this);">Use inherited permissions</a>
<a class="clickable[% UNLESS perm.inherited %] hide[% END %]" onclick="editor.clear_permissions(this);">
Use inherited permissions
</a>
<span>
</td>
</tr>
[% END %]
</table>

<script type="text/javascript">

function use_inherited(link) {
var span = link.parentNode;
var td = span.parentNode;
var row = td.parentNode;

var role_name = $(td).find('input').get(0).value;

$.ajax({
type: "POST",
url: "[% c.uri_for('jsrpc/clear_permissions') %]",
data: "role_name=" + role_name,
success: function() {
$(row).find('input').removeAttr('checked');
$(td).find('span, span a').addClass('hide');
}
});
}

function save_edit(link) {
var td = link.parentNode;
var row = td.parentNode;

var values = [];
$(row).find('input').map( function(i, elt) {
if (elt.type == 'checkbox')
values.push(elt.name + "=" + (elt.checked ? "1" : "0"));
else
values.push(elt.name + "=" + elt.value);
} );

$.ajax({
type: "POST",
url: "[% c.uri_for('jsrpc/set_permissions') %]",
data: values.join("&"),
success: function() {
$(row).find('input').attr('disabled', 'disabled');
$(td).find('a,span').toggleClass('hide');
}
});
}

function enable_edit(link) {
$(link.parentNode).find('a').toggleClass('hide');
$(link.parentNode).find('span, span a').addClass('hide');
$(link.parentNode.parentNode).find('input').removeAttr('disabled');
}

</script>
[% END %]

[% END %]
103 changes: 103 additions & 0 deletions root/static/js/wiki.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,106 @@
/* make sure we've got a MojoMojo namespace */
if (typeof(MojoMojo) === 'undefined') MojoMojo = {};

MojoMojo.PermissionsEditor = function(params) {
return {
clear_permissions: function (link) {
var span = link.parentNode;
var td = span.parentNode;
var row = td.parentNode;

var role_name = $(td).find('input').get(0).value;

$.ajax({
type: "POST",
url: params.clear_url,
data: "role_name=" + role_name,
success: function() {
$(row).find('input').removeAttr('checked');
$(td).find('span, span a').addClass('hide');
}
});
},
enable_edit: function (link) {
$(link.parentNode).find('a').toggleClass('hide');
$(link.parentNode).find('span, span a').addClass('hide');
$(link.parentNode.parentNode).find('input').removeAttr('disabled');
},
save_changes: function (link) {
var td = link.parentNode;
var row = td.parentNode;

var values = [];
$(row).find('input').map( function(i, elt) {
if (elt.type == 'checkbox')
values.push(elt.name + "=" + (elt.checked ? "1" : "0"));
else
values.push(elt.name + "=" + elt.value);
} );

$.ajax({
type: "POST",
url: params.set_url,
data: values.join("&"),
success: function() {
$(row).find('input').attr('disabled', 'disabled');
$(td).find('a,span').toggleClass('hide');
}
});
}
};
};

MojoMojo.RoleForm = function(params) {
return {
remove_member: function (link) {
var li = link.parentNode;
var list = li.parentNode;
list.removeChild(li);

var remaining = list.getElementsByTagName('li');
if (remaining.length == 1) {
$(remaining[0]).removeClass('hide');
}
},
setup_autocomplete: function(id) {
var select_item = function (li) {
$("#member_input").get(0).value = '';

// check if it's already added
if ($("#role_members li.member input[value='" + li.extra[0] + "']").length == 0) {
$("#role_members").append(
'<li class="member">' +
li.selectValue +
'<input type="hidden" name="role_members" value="' + li.extra[0] + '"/> ' +
'<a class="clickable" onclick="remove_member(this);">[remove]</a>' +
'</li>'
);
$("#role_members li.empty").addClass('hide');
}
};

var format_item = function (row) {
return row[0];
};

$(document).ready(function() {
$("#" + id).autocomplete(
params.user_search_url,
{
minChars: 1,
matchSubset: 1,
matchContains: 1,
cacheLength: 10,
onItemSelect: select_item,
formatItem: format_item,
selectOnly: 1
}
);
});
}
};
};

var uploader;
$( function() {
$('.fade').each(function() { doBGFade(this,[255,255,100],[255,255,255],'transparent',75,20,4); })
Expand Down

0 comments on commit 0868e1e

Please sign in to comment.