/* * Directory handling JavaScript code. * * @author Jan Dittberner * @version $Id$ * @license GPL * @package DAVAdmin * * Copyright (c) 2007, 2008 Jan Dittberner * * This file is part of DAVAdmin. * * DAVAdmin is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * DAVAdmin is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with DAVAdmin; if not, see . */ function updateDirectories(xmldata) { var dirname = $('dirname', xmldata).text(); var groups = $('groups', xmldata).text(); var filecount = $('filecount', xmldata).text(); var filesize = $('filesize', xmldata).text(); var maydelete = $('maydelete', xmldata).text(); var htmltext = '' + dirname + '' + groups + '' + filecount + ', ' + filesize + '' + intl.translate('; if (maydelete == '1') { htmltext = htmltext + '' + intl.translate('; } htmltext = htmltext + ''; $('#dirtable').find('tr#dir' + dirname).empty().append(htmltext); if (!($('#dirtable').find('tr#dir' + dirname).size())) { var rows = $('#dirtable').find('tr'); var inserted = false; for (var i = 0; !inserted && i < rows.length; i++) { if ($(rows[i]).find('td:first').text() > dirname) { $(rows[i]).before( '' + htmltext + ''); inserted = true; } } if (!inserted) { $(rows[rows.length-1]).before( '' + htmltext + ''); } } $('#dirtable').find('tr#dir' + dirname).find('a.editlink').click(function() { editdirectory(this.id.substr(4)); }); $('#dirtable').find('tr#dir' + dirname).find('a.deletelink').click(function() { removedirectory(this.id.substr(6)); }); } function getDirectoryForm(title, dirname, groups) { return '
' + intl.translate( ' + title + '
'; } function displaydirectoryeditor(title, dirname, groups) { $('#content').hide(); $('#direditor').hide().empty().append(getDirectoryForm(title, dirname, groups)).show(); DAV.autocompleteAutoAttach(); $('#dirform').find('#input-dirname').focus(); $('#closer').click(function() { $('#direditor').hide().empty(); $('#content').show(); }); $('#dirform').submit(function() { if (!this.dirname.value.match(/^[a-zA-Z0-9 -_.]+$/)) { alert(intl.translate("Invalid directory name.")); this.dirname.focus(); return false; } $.post( "/davadmin/directories.php", {method : 'submitdirectory', dirname : this.dirname.value, groups : this.groups.value}, function(retval) { $('div#direditor').hide().empty(); if (!handleerror(retval)) { updateDirectories(retval); $('#content').show(); } }); return false; }); } function editdirectory(dirname) { $.get( "directories.php", {dirname : dirname, method : 'getdirectorydata'}, function(retval) { if (!handleerror(retval)) { var dirname, groups; dirname = $("dirname:first", retval).text(); groups = $("groups:first", retval).text(); displaydirectoryeditor(intl.translate("Edit directory data"), dirname, groups); } }); } function newdirectory() { displaydirectoryeditor(intl.translate("Create new directory"), '', ''); } function deletedirectorydialog(dirname) { $("#direditor").hide().empty(); var msg = intl.translate("Should the directory %s really get deleted?", [dirname]); if (confirm(msg) == true) { $.post( "directories.php", {method : 'deletedirectory', dirname : dirname}, function(retval) { if (!handleerror(retval)) { var dirname = $('dirname:first', retval).text(); $('#dirtable').find('tr#dir' + dirname).remove(); } }); } } function removedirectory(dirname) { $.get( "directories.php", {dirname : dirname, method : 'getdirectorydata'}, function(retval) { if (!handleerror(retval)) { var username, lastname, firstname; var dirname, groups; dirname = $("dirname:first", retval).text(); deletedirectorydialog(dirname); } }); } $(function() { $("a.editlink").each(function(i) { $(this).click(function() { editdirectory(this.id.substr(4)); }); }); $("a.newlink").each(function(i) { $(this).click(function() { newdirectory(); }); }); $("a.deletelink").each(function(i) { $(this).click(function() { removedirectory(this.id.substr(6)); }); }); });