summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Gapczynski <GapczynskiM@gmail.com>2011-08-11 11:15:17 -0400
committerMichael Gapczynski <GapczynskiM@gmail.com>2011-08-11 11:15:17 -0400
commit2af0269eb93c4511edbb300a43795e0b3c0e2209 (patch)
tree6e72701a594a567fa83f202e9dd1411d2d591a8f
parent103d23b3a3b1399112f5628c3f36d5d427be7030 (diff)
parent568fd0df833ccc9c546242b53ce620b0c59e71b9 (diff)
downloadnextcloud-server-2af0269eb93c4511edbb300a43795e0b3c0e2209.tar.gz
nextcloud-server-2af0269eb93c4511edbb300a43795e0b3c0e2209.zip
Merge branch 'sharing' of git://anongit.kde.org/owncloud into sharing
Conflicts: apps/files_sharing/js/share.js
-rw-r--r--admin/ajax/createuser.php3
-rw-r--r--admin/ajax/togglegroups.php8
-rw-r--r--admin/apps.php13
-rw-r--r--admin/css/users.css17
-rw-r--r--admin/js/users.js138
-rw-r--r--admin/templates/users.php57
-rw-r--r--admin/users.php7
-rw-r--r--apps/contacts/carddav.php4
-rw-r--r--apps/contacts/js/interface.js30
-rw-r--r--apps/contacts/lib/addressbook.php4
-rw-r--r--apps/contacts/templates/index.php6
-rw-r--r--apps/files_publiclink/js/admin.js4
-rw-r--r--apps/files_publiclink/templates/admin.php14
-rw-r--r--apps/files_publiclink/templates/breadcrumb.php4
-rw-r--r--apps/files_publiclink/templates/files.php9
-rw-r--r--apps/files_publiclink/templates/index.php17
-rw-r--r--apps/files_sharing/js/share.js23
-rw-r--r--apps/files_sharing/templates/list.php24
-rw-r--r--apps/media/css/music.css8
-rw-r--r--apps/media/js/player.js6
-rw-r--r--apps/media/js/playlist.js124
-rw-r--r--apps/media/templates/music.php27
-rw-r--r--core/css/multiselect.css6
-rw-r--r--core/css/styles.css42
-rw-r--r--core/img/breadcrumb-divider-start.pngbin495 -> 0 bytes
-rw-r--r--core/img/breadcrumb-divider.pngbin1012 -> 0 bytes
-rw-r--r--core/img/breadcrumb-start.pngbin0 -> 452 bytes
-rw-r--r--core/img/breadcrumb-start.svg71
-rw-r--r--core/img/breadcrumb.pngbin0 -> 452 bytes
-rw-r--r--core/img/breadcrumb.svg77
-rw-r--r--core/js/js.js24
-rw-r--r--core/js/multiselect.js160
-rw-r--r--core/templates/layout.user.php8
-rw-r--r--core/templates/part.searchbox.php3
-rw-r--r--files/css/files.css22
-rw-r--r--files/templates/part.breadcrumb.php4
-rw-r--r--lib/base.php2
-rw-r--r--lib/group.php21
-rw-r--r--lib/group/backend.php6
-rw-r--r--lib/group/database.php22
-rw-r--r--lib/template.php4
-rw-r--r--search/css/results.css2
42 files changed, 638 insertions, 383 deletions
diff --git a/admin/ajax/createuser.php b/admin/ajax/createuser.php
index 1bb655ed336..de52f90d4f3 100644
--- a/admin/ajax/createuser.php
+++ b/admin/ajax/createuser.php
@@ -28,6 +28,9 @@ if( in_array( $username, OC_User::getUsers())){
// Return Success story
if( OC_User::createUser( $username, $password )){
foreach( $groups as $i ){
+ if(!OC_Group::groupExists($i)){
+ OC_Group::createGroup($i);
+ }
OC_Group::addToGroup( $username, $i );
}
echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", OC_Group::getUserGroups( $username )))));
diff --git a/admin/ajax/togglegroups.php b/admin/ajax/togglegroups.php
index 808e57dc9d6..3210252af02 100644
--- a/admin/ajax/togglegroups.php
+++ b/admin/ajax/togglegroups.php
@@ -19,11 +19,19 @@ $action = "add";
$username = $_POST["username"];
$group = $_POST["group"];
+if(!OC_Group::groupExists($group)){
+ OC_Group::createGroup($group);
+}
+
// Toggle group
if( OC_Group::inGroup( $username, $group )){
$action = "remove";
$error = "remove user from";
$success = OC_Group::removeFromGroup( $username, $group );
+ $usersInGroup=OC_Group::usersInGroup($group);
+ if(count($usersInGroup)==0){
+ OC_Group::deleteGroup($group);
+ }
}
else{
$success = OC_Group::addToGroup( $username, $group );
diff --git a/admin/apps.php b/admin/apps.php
index 83a48b65245..07e93728a39 100644
--- a/admin/apps.php
+++ b/admin/apps.php
@@ -33,11 +33,16 @@ OC_Util::addScript( "admin", "apps" );
$registeredApps=OC_App::getAllApps();
$apps=array();
+
+$blacklist=array('files_imageviewer','files_textviewer');//we dont want to show configuration for these
+
foreach($registeredApps as $app){
- $info=OC_App::getAppInfo($app);
- $active=(OC_Appconfig::getValue($app,'enabled','no')=='yes')?true:false;
- $info['active']=$active;
- $apps[]=$info;
+ if(array_search($app,$blacklist)===false){
+ $info=OC_App::getAppInfo($app);
+ $active=(OC_Appconfig::getValue($app,'enabled','no')=='yes')?true:false;
+ $info['active']=$active;
+ $apps[]=$info;
+ }
}
$categories=OC_OCSClient::getCategories();
diff --git a/admin/css/users.css b/admin/css/users.css
index 521217df4f4..7c0b76f3691 100644
--- a/admin/css/users.css
+++ b/admin/css/users.css
@@ -1,5 +1,12 @@
-form {display:inline}
-td.remove>img,td.select>input{display:none;cursor:pointer}
-td.select,td.remove{width:1em}
-tr:hover>td.remove>img{display:inline}
-li.selected{background-color:#ddd}
+form { display:inline; }
+td.password>img, td.remove>img{ display:none;cursor:pointer; }
+td.password>span { margin-right:1.2em; }
+td.password { width:12em; }
+td.password>img { float:right; }
+
+td.remove { width:1em }
+tr:hover>td.password>span{ margin:0; }
+tr:hover>td.remove>img, tr:hover>td.password>img { display:inline; }
+li.selected { background-color:#ddd; }
+#content>table { margin-top:6.5em; }
+table { width:100%; }
diff --git a/admin/js/users.js b/admin/js/users.js
index 7e643fb60a2..d6798dca570 100644
--- a/admin/js/users.js
+++ b/admin/js/users.js
@@ -1,5 +1,37 @@
$(document).ready(function(){
- $('select[multiple]').chosen();
+ function applyMultiplySelect(element){
+ var checked=[];
+ var user=element.data('username')
+ if(element.data('userGroups')){
+ checked=element.data('userGroups').split(', ');
+ }
+ if(user){
+ var checkHandeler=function(group){
+ if(user==OC.currentUser && group=='admin'){
+ return false;
+ }
+ $.post(
+ OC.filePath('admin','ajax','togglegroups.php'),
+ {
+ username:user,
+ group:group
+ },
+ function(){}
+ );
+ }
+ }else{
+ checkHandeler=false;
+ }
+ element.multiSelect({
+ createText:'add group',
+ checked:checked,
+ oncheck:checkHandeler,
+ onuncheck:checkHandeler
+ });
+ }
+ $('select[multiple]').each(function(index,element){
+ applyMultiplySelect($(element));
+ });
$('td.remove>img').live('click',function(event){
var uid=$(this).parent().parent().data('uid');
@@ -13,11 +45,38 @@ $(document).ready(function(){
$(this).parent().parent().remove();
});
+ $('td.password>img').live('click',function(event){
+ var img=$(this);
+ var uid=img.parent().parent().data('uid');
+ var input=$('<input type="password">');
+ img.css('display','none');
+ img.parent().children('span').replaceWith(input);
+ input.focus();
+ input.keypress(function(event) {
+ if(event.keyCode == 13) {
+ if($(this).val().length>0){
+ $.post(
+ OC.filePath('admin','ajax','changepassword.php'),
+ {username:uid,password:$(this).val()},
+ function(result){}
+ );
+ input.blur();
+ }else{
+ input.blur();
+ }
+ }
+ });
+ input.blur(function(){
+ $(this).replaceWith($('<span>●●●●●●●</span>'));
+ img.css('display','');
+ });
+ });
+
$('#newuser').submit(function(event){
event.preventDefault();
var username=$('#newusername').val();
var password=$('#newuserpassword').val();
- var groups=$('#newusergroups').val();
+ var groups=$('#newusergroups').prev().children('div').data('settings').checked;
$.post(
OC.filePath('admin','ajax','createuser.php'),
{
@@ -29,72 +88,21 @@ $(document).ready(function(){
}
);
- var tr=$('#rightcontent tr').first().clone();
+ var tr=$('#content table tr').first().clone();
tr.attr('data-uid',username);
tr.find('td.name').text(username);
- tr.find('td.groups').text(groups.join(', '));
- $('#rightcontent tr').first().after(tr);
- if(groups.indexOf($('#leftcontent li.selected').text().trim())!=-1){
- tr.find('td.select input').attr('checked','checked');
- }
- });
-
- $('#newgroup').submit(function(event){
- event.preventDefault();
- var name=$('#newgroupname').val();
- $.post(
- OC.filePath('admin','ajax','creategroup.php'),
- {groupname:name},
- function(result){
-
- }
- );
- $('#newusergroups').append('<option value="'+name+'">'+name+'</option>');
- $('select[multiple]').trigger("liszt:updated");
- var li=$('#leftcontent li').first().next().clone();
- li.text(name);
- $('#leftcontent li').first().after(li);
- });
-
- $('#leftcontent li').live('click',function(event){
- $('#leftcontent li').removeClass('selected');
- $(this).addClass('selected');
- $('#rightcontent tr td.select input').show();
- $('#rightcontent tr td.select input').removeAttr('checked');
- var group=$(this).text().trim();
- var rows=$('#rightcontent tr').filter(function(i,tr){
- return ($(tr).children('td.groups').text().split(', ').indexOf(group)>-1);
+ var select=$('<select multiple="multiple" data-placehoder="Groups" title="Groups">');
+ select.data('username',username);
+ select.data('userGroups',groups.join(', '));
+ tr.find('td.groups').empty();
+ $.each($('#content table').data('groups').split(', '),function(i,group){
+ select.append($('<option value="'+group+'">'+group+'</option>'));
});
- rows.find('td.select input').attr('checked','checked');
- });
- $('#rightcontent tr td.select input').live('change',function(event){
- var group=$('#leftcontent li.selected').text().trim();
- var user=$(this).parent().parent().children('td.name').text().trim();
- if(group=='admin' && user==OC.currentUser){
- event.preventDefault();
- $(this).attr('checked','checked');
- return false;
- }
- if(group){
- $.post(
- OC.filePath('admin','ajax','togglegroups.php'),
- {
- username:user,
- group:group
- },
- function(result){
-
- }
- );
- var groups=$(this).parent().parent().children('td.groups').text().trim().split(', ');
- if(groups[0]=='') groups.pop();
- var index=groups.indexOf(group);
- if(index==-1){
- groups.push(group);
- }else{
- groups.splice(index,1);
- }
- $(this).parent().parent().children('td.groups').text(groups.join(', '));
+ tr.find('td.groups').append(select);
+ if(tr.find('td.remve img').length==0){
+ tr.find('td.remove').append($('<img alt="Remove" title="'+t('admin','Remove')+'" class="svg" src="'+OC.imagePath('core','actions/delete')+'"/>'));
}
+ applyMultiplySelect(select);
+ $('#content table tr').last().after(tr);
});
});
diff --git a/admin/templates/users.php b/admin/templates/users.php
index 00daf4c5263..166f78ed919 100644
--- a/admin/templates/users.php
+++ b/admin/templates/users.php
@@ -1,8 +1,4 @@
<div id="controls">
- <form id="newgroup">
- <input id="newgroupname" placeholder="<?php echo $l->t('Name')?>"></input>
- <input type="submit" value="<?php echo $l->t('Create')?>"></input>
- </form>
<form id="newuser">
<input id="newusername" placeholder="<?php echo $l->t('Name')?>"></input>
<input type="password" id="newuserpassword" placeholder="<?php echo $l->t('Password')?>"></input>
@@ -14,29 +10,32 @@
<input type="submit" value="<?php echo $l->t('Create')?>"></input>
</form>
</div>
-<ul id="leftcontent">
- <?php foreach($_["groups"] as $group): ?>
- <li data-gid="<?php echo $group["name"]; ?>">
- <?php echo $group["name"] ?>
- </li>
+<?php
+$allGroups=array();
+foreach($_["groups"] as $group){
+ $allGroups[]=$group['name'];
+}
+?>
+<table data-groups="<?php echo implode(', ',$allGroups);?>">
+ <?php foreach($_["users"] as $user): ?>
+ <tr data-uid="<?php echo $user["name"] ?>">
+ <td class="name"><?php echo $user["name"]; ?></td>
+ <td class="password">
+ <span>●●●●●●●</span>
+ <img class="svg" src="<?php echo image_path('core','actions/rename.svg')?>"/>
+ </td>
+ <td class="groups">
+ <select data-username="<?php echo $user['name'] ;?>" data-user-groups="<?php echo $user['groups'] ;?>" data-placeholder="groups" title="<?php echo $l->t('Groups')?>" multiple="multiple">
+ <?php foreach($_["groups"] as $group): ?>
+ <option value="<?php echo $group['name'];?>"><?php echo $group['name'];?></option>
+ <?php endforeach;?>
+ </select>
+ </td>
+ <td class="remove">
+ <?php if($user['name']!=OC_User::getUser()):?>
+ <img alt="Remove" title="<?php echo $l->t('Remove')?>" class='svg' src='<?php echo image_path('core','actions/delete.svg') ?>'/>
+ <?php endif;?>
+ </td>
+ </tr>
<?php endforeach; ?>
-</ul>
-<div id="rightcontent">
- <table>
- <?php foreach($_["users"] as $user): ?>
- <tr data-uid="<?php echo $user["name"] ?>">
- <td class="select"><input type="checkbox"></input></td>
- <td class="name"><?php echo $user["name"]; ?></td>
- <td class="groups"><?php if( $user["groups"] ){ echo $user["groups"]; }else{echo "&nbsp";} ?></td>
- <td class="remove">
- <?php if($user['name']!=OC_User::getUser()):?>
- <img alt="Remove" title="<?php echo $l->t('Remove')?>" class='svg' src='<?php echo image_path('core','actions/delete.svg') ?>'/>
- <?php endif;?>
- </td>
- </tr>
- <?php endforeach; ?>
- </table>
-</div>
-<div id="#selecteduser">
-
-</div>
+</table>
diff --git a/admin/users.php b/admin/users.php
index 4a83510cb72..b120e10d437 100644
--- a/admin/users.php
+++ b/admin/users.php
@@ -38,12 +38,7 @@ $users = array();
$groups = array();
foreach( OC_User::getUsers() as $i ){
- // Do some more work here soon
- $ingroups = array();
- foreach( OC_Group::getUserGroups( $i ) as $userGroup ){
- $ingroups[] = $userGroup;
- }
- $users[] = array( "name" => $i, "groups" => join( ", ", $ingroups ));
+ $users[] = array( "name" => $i, "groups" => join( ", ", OC_Group::getUserGroups( $i ) ));
}
foreach( OC_Group::getGroups() as $i ){
diff --git a/apps/contacts/carddav.php b/apps/contacts/carddav.php
index 581bf4a717b..77b3c105deb 100644
--- a/apps/contacts/carddav.php
+++ b/apps/contacts/carddav.php
@@ -32,8 +32,8 @@ $carddavBackend = new OC_Connector_Sabre_CardDAV();
// Root nodes
$nodes = array(
- new Sabre_DAVACL_PrincipalCollection($principalBackend),
- new Sabre_CardDAV_AddressBookRoot($principalBackend, $carddavBackend),
+ new Sabre_DAVACL_PrincipalCollection($principalBackend),
+ new Sabre_CardDAV_AddressBookRoot($principalBackend, $carddavBackend),
);
// Fire up server
diff --git a/apps/contacts/js/interface.js b/apps/contacts/js/interface.js
index bab71eec422..ef2179b372b 100644
--- a/apps/contacts/js/interface.js
+++ b/apps/contacts/js/interface.js
@@ -4,12 +4,12 @@ $(document).ready(function(){
return false;
});*/
- $('#contacts_contacts li').live('click',function(){
+ $('#leftcontent li').live('click',function(){
var id = $(this).data('id');
$.getJSON('ajax/getdetails.php',{'id':id},function(jsondata){
if(jsondata.status == 'success'){
- $('#contacts_details').data('id',jsondata.data.id);
- $('#contacts_details').html(jsondata.data.page);
+ $('#rightcontent').data('id',jsondata.data.id);
+ $('#rightcontent').html(jsondata.data.page);
}
else{
alert(jsondata.data.message);
@@ -19,12 +19,12 @@ $(document).ready(function(){
});
$('#contacts_deletecard').live('click',function(){
- var id = $('#contacts_details').data('id');
+ var id = $('#rightcontent').data('id');
$.getJSON('ajax/deletecard.php',{'id':id},function(jsondata){
if(jsondata.status == 'success'){
- $('#contacts_contacts [data-id="'+jsondata.data.id+'"]').remove();
- $('#contacts_details').data('id','');
- $('#contacts_details').html('');
+ $('#leftcontent [data-id="'+jsondata.data.id+'"]').remove();
+ $('#rightcontent').data('id','');
+ $('#rightcontent').html('');
}
else{
alert(jsondata.data.message);
@@ -34,10 +34,10 @@ $(document).ready(function(){
});
$('#contacts_addproperty').live('click',function(){
- var id = $('#contacts_details').data('id');
+ var id = $('#rightcontent').data('id');
$.getJSON('ajax/showaddproperty.php',{'id':id},function(jsondata){
if(jsondata.status == 'success'){
- $('#contacts_details').append(jsondata.data.page);
+ $('#rightcontent').append(jsondata.data.page);
}
else{
alert(jsondata.data.message);
@@ -79,8 +79,8 @@ $(document).ready(function(){
$('#contacts_newcontact').click(function(){
$.getJSON('ajax/showaddcard.php',{},function(jsondata){
if(jsondata.status == 'success'){
- $('#contacts_details').data('id','');
- $('#contacts_details').html(jsondata.data.page);
+ $('#rightcontent').data('id','');
+ $('#rightcontent').html(jsondata.data.page);
}
else{
alert(jsondata.data.message);
@@ -92,8 +92,8 @@ $(document).ready(function(){
$('#contacts_addcardform input[type="submit"]').live('click',function(){
$.post('ajax/addcard.php',$('#contacts_addcardform').serialize(),function(jsondata){
if(jsondata.status == 'success'){
- $('#contacts_details').data('id',jsondata.data.id);
- $('#contacts_details').html(jsondata.data.page);
+ $('#rightcontent').data('id',jsondata.data.id);
+ $('#rightcontent').html(jsondata.data.page);
}
else{
alert(jsondata.data.message);
@@ -103,7 +103,7 @@ $(document).ready(function(){
});
$('.contacts_property [data-use="edit"]').live('click',function(){
- var id = $('#contacts_details').data('id');
+ var id = $('#rightcontent').data('id');
var checksum = $(this).parent().parent().data('checksum');
$.getJSON('ajax/showsetproperty.php',{'id': id, 'checksum': checksum },function(jsondata){
if(jsondata.status == 'success'){
@@ -129,7 +129,7 @@ $(document).ready(function(){
});
$('.contacts_property [data-use="delete"]').live('click',function(){
- var id = $('#contacts_details').data('id');
+ var id = $('#rightcontent').data('id');
var checksum = $(this).parent().parent().data('checksum');
$.getJSON('ajax/deleteproperty.php',{'id': id, 'checksum': checksum },function(jsondata){
if(jsondata.status == 'success'){
diff --git a/apps/contacts/lib/addressbook.php b/apps/contacts/lib/addressbook.php
index 8b91cdbd6f5..bab260840d9 100644
--- a/apps/contacts/lib/addressbook.php
+++ b/apps/contacts/lib/addressbook.php
@@ -120,10 +120,10 @@ class OC_Contacts_Addressbook{
}
public static function deleteAddressbook($id){
- $stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*contacts_cards WHERE id = ?' );
+ $stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*contacts_addressbooks WHERE id = ?' );
$stmt->execute(array($id));
- $stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*contacts_addressbooks WHERE addressbookid = ?' );
+ $stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*contacts_cards WHERE addressbookid = ?' );
$stmt->execute(array($id));
return true;
diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php
index ea76621674a..ffcca50b34d 100644
--- a/apps/contacts/templates/index.php
+++ b/apps/contacts/templates/index.php
@@ -3,15 +3,15 @@ OC_Util::addScript('contacts','interface');
OC_Util::addStyle('contacts','styles');
?>
-<div id="contacts_contacts" class="leftcontent">
+<div id="leftcontent" class="leftcontent">
<ul>
<?php echo $this->inc("part.contacts"); ?>
</ul>
<a id="contacts_newcontact"><?php echo $l->t('Add Contact'); ?></a>
</div>
-<div id="contacts_details" class="rightcontent" data-id="<?php echo $_['id']; ?>">
+<div id="rightcontent" class="rightcontent" data-id="<?php echo $_['id']; ?>">
<?php echo $this->inc("part.details"); ?>
</div>
<?php if(count($_['addressbooks']) == 1 ): ?>
- <?php echo $l->t('The path to this addressbook is %s', array(OC::$WEBROOT.'/apps/contacts/carddav.php/addressbooks/'.$_['addressbooks'][0]['uri'])); ?>
+ <?php echo $l->t('The path to this addressbook is %s', array(OC::$WEBROOT.'/apps/contacts/carddav.php/addressbooks/'.OC_User::getUser().'/'.$_['addressbooks'][0]['uri'])); ?>
<?php endif; ?>
diff --git a/apps/files_publiclink/js/admin.js b/apps/files_publiclink/js/admin.js
index 20eae19c5d8..91ee58beda8 100644
--- a/apps/files_publiclink/js/admin.js
+++ b/apps/files_publiclink/js/admin.js
@@ -31,11 +31,13 @@ $(document).ready(function() {
if(token){
var html="<tr class='link' id='"+token+"'>";
html+="<td class='path'>"+path+"</td>";
- html+="<td class='link'><a href='get.php?token="+token+"'>"+$('#baseUrl').val()+"?token="+token+"</a></td>"
+ html+="<td class='link'><input type='text' value='"+$('#baseUrl').val()+"?token="+token+"' /></td>"
html+="<td><input type='submit' class='delete' data-token='"+token+" value='Delete' /></td>"
html+="</tr>"
$(html).insertAfter($('#newlink_row'));
$('#path').val('');
+ $('#'+token+' input').focus();
+ $('#'+token+' input').select();
}
}
});
diff --git a/apps/files_publiclink/templates/admin.php b/apps/files_publiclink/templates/admin.php
index 4608877e5b8..f6c92d5cb17 100644
--- a/apps/files_publiclink/templates/admin.php
+++ b/apps/files_publiclink/templates/admin.php
@@ -1,18 +1,20 @@
<input type="hidden" id="baseUrl" value="<?php echo $_['baseUrl'];?>"/>
<table id="linklist">
- <tbody>
+ <thead id="controls">
<tr id="newlink_row">
<form action="#" id="newlink">
<td class="path"><input placeholder="Path" id="path"/></td>
<td><input type="submit" value="Share" /></td>
</form>
</tr>
+ </thead>
+ <tbody>
<?php foreach($_['links'] as $link):?>
- <tr class="link" id="<?php echo $link['token'];?>">
- <td class="path"><?php echo $link['path'];?></td>
- <td class="link"><a href="get.php?token=<?php echo $link['token'];?>"><?php echo $_['baseUrl'];?>?token=<?php echo $link['token'];?></a></td>
- <td><input type="submit" class="delete" data-token="<?php echo $link['token'];?>" value="<?php echo $l->t( 'Delete' ); ?>" /></td>
- </tr>
+ <tr class="link" id="<?php echo $link['token'];?>">
+ <td class="path"><?php echo $link['path'];?></td>
+ <td class="link"><input type="text" value="<?php echo $_['baseUrl'];?>?token=<?php echo $link['token'];?>" /></td>
+ <td><input type="submit" class="delete" data-token="<?php echo $link['token'];?>" value="<?php echo $l->t( 'Delete' ); ?>" /></td>
+ </tr>
<?php endforeach;?>
</tbody>
</table>
diff --git a/apps/files_publiclink/templates/breadcrumb.php b/apps/files_publiclink/templates/breadcrumb.php
deleted file mode 100644
index 733531d9e10..00000000000
--- a/apps/files_publiclink/templates/breadcrumb.php
+++ /dev/null
@@ -1,4 +0,0 @@
- <a href="<?php echo link_to("files_publiclink", "get.php?token=".$_['token']); ?>"><img src="<?php echo image_path("", "actions/go-home.png"); ?>" alt="Root" /></a>
- <?php foreach($_["breadcrumb"] as $crumb): ?>
- <a href="<?php echo link_to("files_publiclink", "get.php?token=".$_['token']."&path=".$crumb["dir"]); ?>"><?php echo htmlspecialchars($crumb["name"]); ?></a>
- <?php endforeach; ?> \ No newline at end of file
diff --git a/apps/files_publiclink/templates/files.php b/apps/files_publiclink/templates/files.php
deleted file mode 100644
index 41ff0a1e765..00000000000
--- a/apps/files_publiclink/templates/files.php
+++ /dev/null
@@ -1,9 +0,0 @@
- <?php foreach($_["files"] as $file): ?>
- <tr>
- <td class="selection"><input type="checkbox" /></td>
- <td class="filename"><a style="background-image:url(<?php if($file["type"] == "dir") echo mimetype_icon("dir"); else echo mimetype_icon($file["mime"]); ?>)" href="<?php if($file["type"] == "dir") echo link_to("files_publiclink", "get.php?token=".$_['token']."&path=".$file["directory"]."/".$file["name"]); else echo link_to("files_publiclink", "get.php?token=".$_['token']."&path=".$file["directory"]."/".$file["name"]); ?>" title=""><?php echo htmlspecialchars($file["name"]); ?></a></td>
- <td class="filesize"><?php echo human_file_size($file["size"]); ?></td>
- <td class="date"><?php if($file["type"] != "dir") echo $file["date"]; ?></td>
- <td class="fileaction"><a href="" title="">▾</a></td>
- </tr>
- <?php endforeach; ?>
diff --git a/apps/files_publiclink/templates/index.php b/apps/files_publiclink/templates/index.php
deleted file mode 100644
index 759f3ad8772..00000000000
--- a/apps/files_publiclink/templates/index.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<p class="nav">
- <?php echo($_['breadcrumb']); ?>
-</p>
-<table cellspacing="0">
- <thead>
- <tr>
- <th><input type="checkbox" id="select_all" /></th>
- <th><?php echo $l->t( 'Name' ); ?></th>
- <th><?php echo $l->t( 'Size' ); ?></th>
- <th><?php echo $l->t( 'Modified' ); ?></th>
- <th></th>
- </tr>
- </thead>
- <tbody id="fileList">
- <?php echo($_['fileList']); ?>
- </tbody>
-</table> \ No newline at end of file
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index eb075f0c43f..9cf3f5f6589 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -1,8 +1,10 @@
$(document).ready(function() {
- FileActions.register('all', 'Share', OC.imagePath('core', 'actions/share'), function(filename) {
- createDropdown(filename, $('#dir').val()+'/'+filename);
- });
-
+ if (typeof FileActions !== 'undefined') {
+ FileActions.register('all', 'Share', OC.imagePath('core', 'actions/share'), function(filename) {
+ createDropdown(filename, $('#dir').val()+'/'+filename);
+ });
+ };
+
$('.share').click(function(event) {
event.preventDefault();
var filenames = getSelectedFiles('name');
@@ -13,6 +15,17 @@ $(document).ready(function() {
}
createDropdown(false, files);
});
+
+ $(this).click(function(event) {
+ if ($(event.target).parents().index($('#dropdown')) == -1) {
+ if ($('#dropdown').is(':visible')) {
+ $('#dropdown').hide('blind', function() {
+ $('#dropdown').remove();
+ $('tr').removeClass('mouseOver');
+ });
+ }
+ }
+ });
$(this).click(function(event) {
if ($(event.target).parents().index($('#dropdown')) == -1) {
@@ -182,6 +195,6 @@ function addUser(uid_shared_with, permissions, parentFolder) {
user += "<a href='' title='Unshare' class='unshare' style='display:none;'><img class='svg' src='"+OC.imagePath('core','actions/delete')+"'/></a></li>";
}
$('#share_with option[value="'+uid_shared_with+'"]').remove();
- $('share_with').trigger('liszt:updated');
+ $('#share_with').trigger('liszt:updated');
$(user).appendTo('#shared_list');
}
diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php
index 76b30b31b09..7faf2cf4ba6 100644
--- a/apps/files_sharing/templates/list.php
+++ b/apps/files_sharing/templates/list.php
@@ -1,6 +1,6 @@
<fieldset>
<legend>Your Shared Files</legend>
- <table id='itemlist'>
+ <table id="itemlist">
<thead>
<tr>
<th>Item</th>
@@ -10,19 +10,19 @@
</thead>
<tbody>
<?php foreach($_['shared_items'] as $item):?>
- <tr class='item'>
- <td class='source'><?php echo substr($item['source'], strlen("/".$_SESSION['user_id']."/files/"));?></td>
- <td class='uid_shared_with'><?php echo $item['uid_shared_with'];?></td>
- <td class='permissions'><?php echo "Read"; echo($item['permissions'] & OC_SHARE::WRITE ? ", Edit" : ""); echo($item['permissions'] & OC_SHARE::DELETE ? ", Delete" : "");?></td>
- <td><button class='delete fancybutton' data-source='<?php echo $item['source'];?>' data-uid_shared_with='<?php echo $item['uid_shared_with'];?>'>Delete</button></td>
+ <tr class="item">
+ <td class="source"><?php echo substr($item['source'], strlen("/".$_SESSION['user_id']."/files/"));?></td>
+ <td class="uid_shared_with"><?php echo $item['uid_shared_with'];?></td>
+ <td class="permissions"><?php echo "Read"; echo($item['permissions'] & OC_SHARE::WRITE ? ", Edit" : ""); echo($item['permissions'] & OC_SHARE::DELETE ? ", Delete" : "");?></td>
+ <td><button class="delete" data-source="<?php echo $item['source'];?>" data-uid_shared_with="<?php echo $item['uid_shared_with'];?>">Delete</button></td>
</tr>
<?php endforeach;?>
- <tr id='share_item_row'>
- <form action='#' id='share_item'>
- <td class='source'><input placeholder='Item' id='source'/></td>
- <td class='uid_shared_with'><input placeholder='Share With' id='uid_shared_with'/></td>
- <td class='permissions'><input placeholder='Permissions' id='permissions'/></td>
- <td><input type='submit' value='Share'/></td>
+ <tr id="share_item_row">
+ <form action="#" id="share_item">
+ <td class="source"><input placeholder="Item" id="source" /></td>
+ <td class="uid_shared_with"><input placeholder="Share With" id="uid_shared_with" /></td>
+ <td class="permissions"><input placeholder="Permissions" id="permissions" /></td>
+ <td><input type="submit" value="Share" /></td>
</form>
</tr>
</tbody>
diff --git a/apps/media/css/music.css b/apps/media/css/music.css
index dd9b8ea70d9..c78ab200719 100644
--- a/apps/media/css/music.css
+++ b/apps/media/css/music.css
@@ -3,17 +3,13 @@
li button.right.prettybutton{font-size:1em;}
#collection{padding-top:1em;position:relative;width:70ex;float:left;}
#collection li.album,#collection li.song{margin-left:3ex;}
-#playlist{border-spacing:0;}
-#playlist th{background-color:#ccc; text-align:left; font-size:1.2em; padding:0.2em}
-#playlist tr.selected{background-color:#eee;}
-#playlist tr.current{background-color:#ccc;}
-#playlist td.time, #playlist th.time{text-align:right; padding-right:1em;}
+#leftcontent img.remove { display:none; float:right; cursor:pointer; }
+#leftcontent li:hover img.remove { display:inline; }
#collection li button{float:right;}
#collection li,#playlist li{list-style-type:none;}
.template{display:none}
#collection li{padding-right:10px;}
-img.remove{float:right;}
#searchresults input.play, #searchresults input.add{float:right; height:16px; width:16px;}
#collection tr.collapsed td.album, #collection tr.collapsed td.title{color:#ddd}
a.expander{float:right;display:block}
diff --git a/apps/media/js/player.js b/apps/media/js/player.js
index 4e1cc3cd754..8298db56e61 100644
--- a/apps/media/js/player.js
+++ b/apps/media/js/player.js
@@ -30,7 +30,7 @@ var PlayList={
if(PlayList.player){
if(PlayList.player.data('jPlayer').options.supplied!=PlayList.items[index].type){//the the audio type changes we need to reinitialize jplayer
PlayList.player.jPlayer("destroy");
- PlayList.init(PlayList.items[index].type,function(){PlayList.play(null,time,eady)});
+ PlayList.init(PlayList.items[index].type,function(){PlayList.play(null,time,ready)});
}else{
PlayList.player.jPlayer("setMedia", PlayList.items[PlayList.current]);
PlayList.items[index].playcount++;
@@ -73,7 +73,7 @@ var PlayList={
PlayList.render();
return false;
});
- PlayList.player=$('#jp-interface div.player');
+ PlayList.player=$('#controls div.player');
}
$(PlayList.player).jPlayer({
ended:PlayList.next,
@@ -91,7 +91,7 @@ var PlayList={
}
},
volume:PlayList.volume,
- cssSelectorAncestor:'#jp-interface',
+ cssSelectorAncestor:'#controls',
swfPath:OC.linkTo('media','js'),
});
},
diff --git a/apps/media/js/playlist.js b/apps/media/js/playlist.js
index ad6c63a0333..778939db01c 100644
--- a/apps/media/js/playlist.js
+++ b/apps/media/js/playlist.js
@@ -2,49 +2,21 @@ PlayList.render=function(){
$('#playlist').show();
PlayList.parent.empty();
for(var i=0;i<PlayList.items.length;i++){
- var tr=PlayList.template.clone();
var item=PlayList.items[i];
- if(i==PlayList.current){
- tr.addClass('current');
- }
- tr.removeClass('template');
- tr.data('name',item.name);
- tr.data('artist',item.artist);
- tr.children('td.name').children('span').text(item.name);
- tr.children('td.artist').text(item.artist);
- tr.children('td.album').text(item.album);
- tr.data('index',i);
- tr.click(function(){
- PlayList.play($(this).data('index'));
- PlayList.render();
- });
- tr.hover(function(){
- var button=$('<img class="remove" title="'+t('media','Remove')+'"/>');
- button.attr('src',OC.imagePath('core','actions/delete'));
- $(this).children().last().append(button);
- button.click(function(event){
- event.stopPropagation();
- event.preventDefault();
- var index=$(this).parent().parent().data('index');
- PlayList.remove(index);
- });
- },function(){
- $(this).children().last().children('img.remove').remove();
- });
- tr.children('td.name').children('input').click(function(event){
+ var li=$('<li/>');
+ li.append(item.name);
+ var img=$('<img class="remove" src="'+OC.imagePath('core','actions/delete')+'"/>');
+ img.click(function(event){
event.stopPropagation();
- if($(this).attr('checked')){
- $(this).parent().parent().addClass('selected');
- if($('tbody td.name input:checkbox').length==$('tbody td.name input:checkbox:checked').length){
- $('#selectAll').attr('checked',true);
- }
- }else{
- $(this).parent().parent().removeClass('selected');
- $('#selectAll').attr('checked',false);
- }
- procesSelection();
+ PlayList.remove($(this).parent().data('index'));
+ });
+ li.click(function(event){
+ PlayList.play($(this).data('index'));
});
- PlayList.parent.append(tr);
+ li.append(img)
+ li.data('index',i);
+ li.addClass('song');
+ PlayList.parent.append(li);
}
}
PlayList.getSelected=function(){
@@ -55,78 +27,16 @@ PlayList.hide=function(){
}
$(document).ready(function(){
- PlayList.parent=$('#playlist tbody');
- PlayList.template=$('#playlist tr.template');
+ PlayList.parent=$('#leftcontent');
$('#selectAll').click(function(){
if($(this).attr('checked')){
// Check all
- $('tbody td.name input:checkbox').attr('checked', true);
- $('tbody td.name input:checkbox').parent().parent().addClass('selected');
+ $('#leftcontent li.song input:checkbox').attr('checked', true);
+ $('#leftcontent li.song input:checkbox').parent().addClass('selected');
}else{
// Uncheck all
- $('tbody td.name input:checkbox').attr('checked', false);
- $('tbody td.name input:checkbox').parent().parent().removeClass('selected');
+ $('#leftcontent li.song input:checkbox').attr('checked', false);
+ $('#leftcontent li.song input:checkbox').parent().removeClass('selected');
}
- procesSelection();
});
});
-
-function procesSelection(){
- var selected=PlayList.getSelected();
- if(selected.length==0){
- $('th.name span').text(t('media','Name'));
- $('th.artist').text(t('media','Artist'));
- $('th.album').text(t('media','Album'));
- $('th.time').text(t('media','Time'));
- $('th.plays').empty();
- $('th.plays').text(t('media','Plays'));
- }else{
- var name=selected.length+' '+t('media','selected');
- var artist=$(selected[0]).data('artist');
- var album=$(selected[0]).data('album');
- var time=$(selected[0]).data('time');
- var plays=$(selected[0]).data('plays');
- for(var i=1;i<selected.length;i++){
- var item=$(selected[i]);
- if(artist!='mixed' && item.data('artist')!==artist){
- artist='mixed'
- }
- if(album!='mixed' && item.data('album')!==album){
- album='mixed'
- }
- if(time!='mixed' && item.data('time')!==time){
- time='mixed'
- }
- if(plays!='mixed' && item.data('plays')!==plays){
- plays='mixed'
- }
- }
- $('th.name span').text(name);
- $('th.artist').text(artist);
- $('th.album').text(album);
- if(time!='mixed'){
- var secconds=(time%60);
- if(secconds<10){
- secconds='0'+secconds;
- }
- var time=Math.floor(time/60)+':'+secconds;
- }
- $('th.time').text(time);
- $('th.plays').text(plays);
- var button=$('<img class="remove" title="Remove"/>');
- button.attr('src',OC.imagePath('core','actions/delete'));
- $('th.plays').append(button);
- button.click(function(event){
- event.stopPropagation();
- event.preventDefault();
- PlayList.getSelected().each(function(index,element){
- var index=$(element).data('index');
- PlayList.items[index]=null;
- });
- PlayList.items=PlayList.items.filter(function(item){return item!==null});
- PlayList.render();
- PlayList.save();
- procesSelection();
- });
- }
-} \ No newline at end of file
diff --git a/apps/media/templates/music.php b/apps/media/templates/music.php
index d103e10b750..a89c5421b4a 100644
--- a/apps/media/templates/music.php
+++ b/apps/media/templates/music.php
@@ -20,32 +20,7 @@
<div class="player" id="jp-player"></div>
</div>
-<div id="leftcontent">
-<table id="playlist">
- <thead>
- <tr>
- <th class="name"><input id="selectAll" type="checkbox"><?php echo $l->t('Name')?></th>
- <th class="artist"><?php echo $l->t('Artist')?></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <?php echo $l->t('The playlist is empty')?>
- </td>
- </tr>
- </tbody>
- <tfoot>
- <tr class="template">
- <td class="name">
- <input type="checkbox">
- <span></span>
- </td>
- <td class="artist"></td>
- </tr>
- </tfoot>
-</table>
-</div>
+<ul id="leftcontent"></ul>
<div id="rightcontent">
<div id="scan">
diff --git a/core/css/multiselect.css b/core/css/multiselect.css
new file mode 100644
index 00000000000..d78dede95c0
--- /dev/null
+++ b/core/css/multiselect.css
@@ -0,0 +1,6 @@
+ul.multiselectoptions { z-index:49; position:absolute; background-color:#fff; padding-top:.5em; border-bottom-left-radius:.5em; border-bottom-right-radius:.5em; border:1px solid #ddd; border-top:none; }
+div.multiselect { padding-right:.6em; display:inline; position:relative; display:inline-block }
+div.multiselect.active { background-color:#fff; border-bottom:none; border-bottom-left-radius:0; border-bottom-right-radius:0; z-index:50; position:relative }
+div.multiselect>span:first-child { margin-right:2em; }
+div.multiselect>span:last-child { float:right; position:relative }
+ul.multiselectoptions input.new{ margin:0; padding-bottom:0.2em; padding-top:0.2em; border-top-left-radius:0; border-top-right-radius:0; }
diff --git a/core/css/styles.css b/core/css/styles.css
index 9da216a80d2..05bb63e0f07 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -15,7 +15,7 @@ body { background:#fefefe; font:normal 80%/1.6em "Lucida Grande", Arial, Verdana
/* HEADERS */
-#body-user #header, #body-settings #header { position:fixed; top:0; z-index:300; width:100%; height:2.5em; padding:.5em; background:#1d2d44; -moz-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; box-shadow:0 0 10px #000, inset 0 -2px 10px #222; }
+#body-user #header, #body-settings #header { position:fixed; top:0; z-index:100; width:100%; height:2.5em; padding:.5em; background:#1d2d44; -moz-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; box-shadow:0 0 10px #000, inset 0 -2px 10px #222; }
#body-login #header { margin:-2em auto 0; text-align:center; height:10em;
-moz-box-shadow:0 0 1em #000; -webkit-box-shadow:0 0 1em #000; box-shadow:0 0 1em #000;
background: #1d2d44; /* Old browsers */
@@ -33,12 +33,12 @@ h1 { margin:1em 3em 1em 0; border-bottom:1px solid #666; text-transform:uppercas
/* INPUTS */
input[type="text"], input[type="password"] { cursor:text; }
-input, select { font-size:1em; width:10em; margin:.3em; padding:.6em .5em .4em; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
+input, select, .button { font-size:1em; width:10em; margin:.3em; padding:.6em .5em .4em; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
input[type="text"], input[type="password"] { background:#f8f8f8; color:#555; cursor:text; }
input[type="text"]:hover, input[type="text"]:focus, input[type="password"]:hover, input[type="password"]:focus { background:#fff; color:#333; }
-input[type="submit"], input[type="button"] { width:auto; padding:.4em; border:1px solid #ddd; font-weight:bold; cursor:pointer; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
-input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, input[type="button"]:focus { background:#fff; color:#333; }
+input[type="submit"], input[type="button"], .button { width:auto; padding:.4em; border:1px solid #ddd; font-weight:bold; cursor:pointer; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
+input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, input[type="button"]:focus, .button:hover { background:#fff; color:#333; }
input[type="checkbox"] { width:auto; }
#body-login input { font-size:1.5em; }
@@ -49,12 +49,6 @@ radius:1em; border-radius:1em; }
input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; }
input[type="submit"].highlight{ background:#ffc100; border:1px solid #db0; text-shadow:#ffeedd 0 1px 0; -moz-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; }
-
-
-form#user_settings { max-width:600px; }
-form#user_settings p label { display:block; float:left; width:35%; padding:.4em .5em 0 0; text-align:right; }
-form p { padding:.5em 4em .5em .5em; text-align:left; }
-form p.form_footer { margin:1em 0 0 0; text-align:right; }
form label { cursor:pointer; }
#body-settings fieldset { padding:1em; width:40em; margin:1em;
border:1px solid #ddd; font-weight:bold; background:#f2f2f2; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em;}
@@ -62,10 +56,10 @@ legend { padding:.2em; font-size:1.2em; }
.template{display:none;}
/* CONTENT ------------------------------------------------------------------ */
-#controls { width:100%; top:3.5em; height:2.8em; margin:0; background:#f7f7f7; border-bottom:1px solid #eee; position:fixed; z-index:200; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000; }
+#controls { width:100%; top:3.5em; height:2.8em; margin:0; background:#f7f7f7; border-bottom:1px solid #eee; position:fixed; z-index:50; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000; }
#content { margin:3.5em 0 0 12.5em; padding-bottom:10em; }
-#leftcontent { position:absolute; top:6.5em; width:20em; background:#f8f8f8; height:100%; border-right:1px solid #ddd; }
-#rightcontent { position:absolute; top:6.5em; left:33em; }
+#leftcontent { position:absolute; top:6.4em; width:20em; background:#f8f8f8; height:100%; border-right:1px solid #ddd; }
+#rightcontent { position:absolute; top:6.4em; left:33em; }
/* LOG IN & INSTALLATION ------------------------------------------------------------ */
#body-login { background:#ddd; }
@@ -78,26 +72,19 @@ legend { padding:.2em; font-size:1.2em; }
#login form fieldset legend { font-weight:bold; }
#login form label { position:absolute; margin:.8em .8em; font-size:1.5em; color:#666; }
#login form label#directorylabel { display:block; margin:.95em 0 .8em -5.5em; }
-
#login form input[type="checkbox"]+label { position:relative; margin:0; font-size:1em; text-shadow:#fff 0 1px 0; }
-
#login form ul.errors { background:#fed7d7; border:1px solid #f00; list-style-indent:inside; margin:0 0 4em 0; padding:1em 1em 1em 5em; }
-/* META NAVIGATION (Settings, Log out) ---------------------------------------------------------------- */
-#metanav { float:right; position:relative; top:.5em; right:1em; margin:0; padding:0; }
-#metanav li { display:inline; }
-#metanav li a { margin:.2em; padding:.7em; }
-#metanav li a:hover, #metanav li a:focus { background:rgba(0,0,0,.5); -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:#555 0 1px 0; -moz-box-shadow:#555 0 1px 0; -webkit-box-shadow:#555 0 1px 0; }
-#metanav li a img { vertical-align:middle; }
-
/* NAVIGATION ------------------------------------------------------------- */
-#navigation { position:fixed; top:3.5em; float:left; width:12.5em; padding:0; z-index:250; height:100%; background:#eee; border-right: 1px #ccc solid; -moz-box-shadow: -3px 0 7px #000; -webkit-box-shadow: -3px 0 7px #000; box-shadow: -3px 0 7px #000; } }
-#navigation ul { border-top:1px solid #ccc; }
-#navigation a { display:block; padding:.6em .5em .4em 2.5em; background:1em center no-repeat; border-bottom:1px solid #ddd; border-top:1px solid #fff; text-decoration:none; font-size:1.2em; color:#666; text-shadow:#f8f8f8 0 1px 0; }
-#navigation a.active, #navigation a:hover, #navigation a:focus, #navigation a.selected { background-color:#ccc; border-top:1px solid #c8c8c8; border-bottom:1px solid #ccc; color:#000; }
+#navigation { position:fixed; top:3.5em; float:left; width:12.5em; padding:0; z-index:75; height:100%; background:#eee; border-right: 1px #ccc solid; -moz-box-shadow: -3px 0 7px #000; -webkit-box-shadow: -3px 0 7px #000; box-shadow: -3px 0 7px #000; }
+#navigation a { display:block; padding:.6em .5em .4em 2.5em; background:#eee 1em center no-repeat; border-bottom:1px solid #ddd; border-top:1px solid #fff; text-decoration:none; font-size:1.2em; color:#666; text-shadow:#f8f8f8 0 1px 0; }
+#navigation a.active, #navigation a:hover, #navigation a:focus { background-color:#dbdbdb; border-top:1px solid #d4d4d4; border-bottom:1px solid #ccc; color:#333; }
+#navigation a.active { background-color:#ddd; }
#navigation #settings { position:absolute; bottom:3.5em; width:100%; }
#expand { margin:0 0 .2em 1.2em; cursor:pointer; }
#expand+span { position:relative; bottom:.4em; left:.2em; font-size:1.2em; color:#666; text-shadow:#f8f8f8 0 1px 0; }
+#logout { position:absolute; right:0; top:0; padding:1.2em 2em .55em 1.2em; }
+#logout:hover, #logout:focus { background:rgba(0,0,0,.5); }
/* USER SETTINGS ------------------------------------------------------------ */
#quota_indicator { margin:0 4em 1em 0; padding:0; border:1px solid #ccc; border-radius:10px; -webkit-border-radius:10px; -moz-border-radius:10px; }
@@ -105,3 +92,6 @@ legend { padding:.2em; font-size:1.2em; }
li.error { width:640px; margin:4em auto; padding:1em 1em 1em 4em; background:#fee url('../img/task-attention.png') .8em .8em no-repeat; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }
.hidden{ display:none; }
+#notification{ z-index:101; background-color:#fc4; border:0; padding:0 .7em .3em; display:block; position:fixed; left:50%; top:0;
+-moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em;
+-moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; }
diff --git a/core/img/breadcrumb-divider-start.png b/core/img/breadcrumb-divider-start.png
deleted file mode 100644
index 24d1eb40857..00000000000
--- a/core/img/breadcrumb-divider-start.png
+++ /dev/null
Binary files differ
diff --git a/core/img/breadcrumb-divider.png b/core/img/breadcrumb-divider.png
deleted file mode 100644
index 52742e37238..00000000000
--- a/core/img/breadcrumb-divider.png
+++ /dev/null
Binary files differ
diff --git a/core/img/breadcrumb-start.png b/core/img/breadcrumb-start.png
new file mode 100644
index 00000000000..a79d675454e
--- /dev/null
+++ b/core/img/breadcrumb-start.png
Binary files differ
diff --git a/core/img/breadcrumb-start.svg b/core/img/breadcrumb-start.svg
new file mode 100644
index 00000000000..4197763dc6c
--- /dev/null
+++ b/core/img/breadcrumb-start.svg
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="11"
+ height="36"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="New document 1">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="18.657977"
+ inkscape:cx="2.6788772"
+ inkscape:cy="16.807262"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3760"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1016.3622)">
+ <path
+ transform="translate(0,1016.3622)"
+ style="fill:#dddddd;fill-opacity:1;stroke:none"
+ d="M 0,0 11,18 0,36 z"
+ id="rect3757"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ </g>
+</svg>
diff --git a/core/img/breadcrumb.png b/core/img/breadcrumb.png
new file mode 100644
index 00000000000..b124f349f56
--- /dev/null
+++ b/core/img/breadcrumb.png
Binary files differ
diff --git a/core/img/breadcrumb.svg b/core/img/breadcrumb.svg
new file mode 100644
index 00000000000..9d522b42b73
--- /dev/null
+++ b/core/img/breadcrumb.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="11"
+ height="36"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="breadcrumb.svg"
+ inkscape:export-filename="/home/jancborchardt/breadcrumb.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="26.386364"
+ inkscape:cx="1.7139473"
+ inkscape:cy="25.655289"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3760"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1016.3622)">
+ <path
+ transform="translate(0,1016.3622)"
+ style="fill:#dddddd;fill-opacity:1;stroke:#dddddd;stroke-width:0.89999998000000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:31.20000076000000178;stroke-opacity:1;stroke-dasharray:none;marker-start:none"
+ d="m 0.5,0 10,18 -10,18 10,-18 z"
+ id="rect3757"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ inkscape:export-filename="/home/jancborchardt/breadcrumb-start.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+</svg>
diff --git a/core/js/js.js b/core/js/js.js
index f4756d97b25..dc8345545a6 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -275,7 +275,29 @@ $(document).ready(function(){
})
});
-
+if (!Array.prototype.map){
+ Array.prototype.map = function(fun /*, thisp */){
+ "use strict";
+
+ if (this === void 0 || this === null)
+ throw new TypeError();
+
+ var t = Object(this);
+ var len = t.length >>> 0;
+ if (typeof fun !== "function")
+ throw new TypeError();
+
+ var res = new Array(len);
+ var thisp = arguments[1];
+ for (var i = 0; i < len; i++){
+ if (i in t){
+ res[i] = fun.call(thisp, t[i], i, t);
+ }
+ }
+
+ return res;
+ };
+}
/*
diff --git a/core/js/multiselect.js b/core/js/multiselect.js
new file mode 100644
index 00000000000..559cdf9b167
--- /dev/null
+++ b/core/js/multiselect.js
@@ -0,0 +1,160 @@
+(function( $ ){
+ var multiSelectId=-1;
+ $.fn.multiSelect=function(options){
+ multiSelectId++;
+ var settings = {
+ 'createCallback':false,
+ 'createText':false,
+ 'title':this.attr('title'),
+ 'checked':[],
+ 'oncheck':false,
+ 'onuncheck':false,
+ };
+ $.extend(settings,options);
+ var button=$('<div class="multiselect button"><span>'+settings.title+'</span><span>▾</span></div>');
+ if(settings.checked.length>0){
+ button.children('span').first().text(settings.checked.join(', '));
+ }
+ var span=$('<span/>');
+ span.append(button);
+ button.data('id',multiSelectId);
+ button.selectedItems=[];
+ this.hide();
+ this.before(span);
+ settings.minWidth=button.width();
+ button.css('min-width',settings.minWidth);
+ settings.minOuterWidth=button.outerWidth()-2;
+ button.data('settings',settings);
+
+ button.click(function(event){
+ var button=$(this);
+ if(button.parent().children('ul').length>0){
+ button.parent().children('ul').slideUp(400,function(){
+ button.parent().children('ul').remove();
+ button.removeClass('active');
+ });
+ return;
+ }
+ var lists=$('ul.multiselectoptions');
+ lists.slideUp(400,function(){
+ lists.remove();
+ $('div.multiselect').removeClass('active');
+ button.addClass('active');
+ });
+ button.addClass('active');
+ event.stopPropagation();
+ var options=$(this).parent().next().children().map(function(){return $(this).val()});
+ var list=$('<ul class="multiselectoptions"/>').hide().appendTo($(this).parent());
+ function createItem(item,checked){
+ var id='ms'+multiSelectId+'-option-'+item;
+ var input=$('<input id="'+id+'" type="checkbox"/>');
+ var label=$('<label for="'+id+'">'+item+'</label>');
+ if(settings.checked.indexOf(item)!=-1 || checked){
+ input.attr('checked','checked');
+ }
+ if(checked){
+ settings.checked.push(item);
+ }
+ input.change(function(){
+ var groupname=$(this).next().text();
+ if($(this).attr('checked')){
+ settings.checked.push(groupname);
+ if(settings.oncheck){
+ if(settings.oncheck(groupname)===false){
+ $(this).removeAttr('checked');
+ return;
+ }
+ }
+ }else{
+ var index=settings.checked.indexOf(groupname);
+ settings.checked.splice(index,1);
+ if(settings.onuncheck){
+ if(settings.onuncheck(groupname)===false){
+ $(this).attr('checked','checked');
+ return;
+ }
+ }
+ }
+ var oldWidth=button.width();
+ if(settings.checked.length>0){
+ button.children('span').first().text(settings.checked.join(', '));
+ }else{
+ button.children('span').first().text(settings.title);
+ }
+ var newOuterWidth=Math.max((button.outerWidth()-2),settings.minOuterWidth)+'px'
+ var newWidth=Math.max(button.width(),settings.minWidth);
+ button.css('height',button.height());
+ button.css('white-space','nowrap');
+ button.css('width',oldWidth);
+ button.animate({'width':newWidth},undefined,undefined,function(){
+ button.css('width','');
+ });
+ list.animate({'width':newOuterWidth});
+ });
+ var li=$('<li></li>');
+ li.append(input).append(label);
+ return li;
+ }
+ $.each(options,function(index,item){
+ list.append(createItem(item));
+ });
+ button.parent().data('preventHide',false);
+ if(settings.createText){
+ var li=$('<li>+ <em>'+settings.createText+'<em></li>');
+ li.click(function(event){
+ li.empty();
+ var input=$('<input class="new">');
+ li.append(input);
+ input.focus();
+ input.css('width',button.width());
+ button.parent().data('preventHide',true);
+ input.keypress(function(event) {
+ if(event.keyCode == 13) {
+ event.preventDefault();
+ event.stopPropagation();
+ var li=$(this).parent();
+ $(this).remove();
+ li.text('+ '+settings.createText);
+ li.before(createItem($(this).val()));
+ li.prev().children('input').trigger('click');
+ button.parent().data('preventHide',false);
+ var select=button.parent().next();
+ select.append($('<option value="'+$(this).val()+'">'+$(this).val()+'</option>'));
+ if(settings.createCallback){
+ settings.createCallback();
+ }
+ }
+ });
+ input.blur(function(){
+ event.preventDefault();
+ event.stopPropagation();
+ $(this).remove();
+ li.text('+ '+settings.createText);
+ setTimeout(function(){
+ button.parent().data('preventHide',false);
+ },100);
+ });
+ });
+ list.append(li);
+ }
+ var pos=button.position();
+ list.css('top',pos.top+button.outerHeight()-5);
+ list.css('left',pos.left+3);
+ list.css('width',(button.outerWidth()-2)+'px');
+ list.slideDown();
+ list.click(function(event){
+ event.stopPropagation();
+ });
+ });
+ $(window).click(function(){
+ if(!button.parent().data('preventHide')){
+ button.parent().children('ul').slideUp(400,function(){
+ button.parent().children('ul').remove();
+ button.removeClass('active');
+ });
+ }
+ });
+
+ return span;
+ };
+})( jQuery ); \ No newline at end of file
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index f172e894e76..849d3a1a09d 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -30,10 +30,10 @@
<body id="<?php echo $_['bodyid'];?>">
<header><div id="header">
<a href="<?php echo link_to('', 'index.php'); ?>" title="" id="owncloud"><img src="<?php echo image_path('', 'owncloud-logo-small-white.png'); ?>" alt="ownCloud" /></a>
- <?php echo $_['searchbox']?>
- <ul id="metanav">
- <li><a href="<?php echo link_to('', 'index.php'); ?>?logout=true" title="<?php echo $l->t('Log out');?>"><img class='svg' src="<?php echo image_path('', 'actions/logout.svg'); ?>" /></a></li>
- </ul>
+ <form class="searchbox" action="#" method="post">
+ <input id='searchbox' type="search" name="query" value="<?php if(isset($_POST['query'])){echo $_POST['query'];};?>" class="prettybutton" autocomplete="off" />
+ </form>
+ <a id="logout" href="<?php echo link_to('', 'index.php'); ?>?logout=true" title="<?php echo $l->t('Log out');?>"><img class='svg' src="<?php echo image_path('', 'actions/logout.svg'); ?>" /></a>
</div></header>
<nav><div id="navigation">
diff --git a/core/templates/part.searchbox.php b/core/templates/part.searchbox.php
deleted file mode 100644
index f5a62de2c8b..00000000000
--- a/core/templates/part.searchbox.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<form class="searchbox" action="#" method="post">
- <input id='searchbox' type="search" name="query" value="<?php if(isset($_POST['query'])){echo $_POST['query'];};?>" class="prettybutton" autocomplete="off" />
-</form>
diff --git a/files/css/files.css b/files/css/files.css
index d6241b749ed..aca612ce1e6 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -1,19 +1,25 @@
+/* Copyright (c) 2011, Jan-Christoph Borchardt
+ This file is licensed under the Affero General Public License version 3 or later.
+ See the COPYING-README file. */
+
/* FILE MENU */
.actions { padding:.6em; float:right; margin-right:13em; }
.actions input { margin:0; padding:.3em; }
#file_menu { right:0; position:absolute; top:0; }
#file_menu a { display:block; float:left; background-image:none; text-decoration:none; }
-.file_upload_form, #file_newfolder_form { display:inline; }
+.file_upload_form, #file_newfolder_form { display:inline; float: left;}
#fileSelector, #file_upload_submit, #file_newfolder_submit { display:none; }
.file_upload_wrapper, #file_newfolder_name { background-repeat:no-repeat; background-position:.5em .3em; padding-left:2em; }
-.file_upload_wrapper { background:url("../img/file.png"); font-weight:bold; position:relative; top:-1.2em; left:-2em; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; width:8em; }
-.file_upload_start { opacity:0; filter:alpha(opacity=0); }
+.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; padding-left:0; overflow:hidden; position:relative; margin-right:1.5em;}
#file_newfolder_name { background-image:url("../img/folder.png"); font-weight:bold; width:8em; }
-.file_upload_start, .file_upload_filename { position:absolute; top:0; left:0; font-size:1em; }
+.file_upload_start, .file_upload_filename { font-size:1em; }
#file_newfolder_submit, #file_upload_submit { width:3em; }
.file_upload_target { display:none; }
+.file_upload_start { opacity:0; filter:alpha(opacity=0); z-index:1; position:absolute; left:0; top:0; width:100%; cursor:pointer;}
+.file_upload_filename { z-index:100; cursor:pointer;}
+
/* FILE TABLE */
span#emptyfolder { position:absolute; margin:10em 0 0 10em; font-size:1.5em; font-weight:bold; color:#888; text-shadow:#fff 0 1px 0; }
table { position:relative; top:37px; width:100%; }
@@ -39,8 +45,7 @@ table td.filename a, table td.login, table td.logout, table td.download, table t
table td.filename .nametext, .modified { float:left; padding:.3em 0; }
table td.filename .nametext { width:60%; }
table td.filename form { float:left; font-size:.85em; }
-/* #fileList tr.selected td.filename a, #fileList tr:hover td.filename a { background-image:none !important } */
-table thead.fixed tr{position:fixed; top:6.4em;z-index:100;}
+table thead.fixed tr{position:fixed; top:6.3em; z-index:49; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000;}
table thead.fixed {height:2em}
#fileList tr td.filename>input[type=checkbox]:first-child { display:none; float:left; margin:.7em 0 0 1em; /* bigger clickable area doesn’t work in FF width:2.8em; height:2.4em;*/ }
#fileList tr td.filename>input[type=checkbox]:checked:first-child, #fileList tr:hover td.filename>input[type=checkbox]:first-child { display:inline; }
@@ -52,7 +57,4 @@ table thead.fixed {height:2em}
.selectedActions a:hover, a.file_action:hover { background:#fff; -moz-box-shadow:0 0 10px #fff; -webkit-box-shadow:0 0 10px #fff; box-shadow:0 0 10px #fff; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }
/* add breadcrumb divider to the File item in navigation panel */
-#navigation>ul>li:first-child { background:url('../../core/img/breadcrumb-divider-start.png') no-repeat 12.5em 0px; width:12.5em; padding-right:1em; }
-#notification{ z-index:150; background-color:#fc4; border:0; padding:0 .7em .3em; display:block; position:fixed; left:50%; top:0;
--moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em;
--moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; }
+#navigation>ul>li:first-child { background:url('../../core/img/breadcrumb-start.png') no-repeat 12.5em 0px; width:12.5em; padding-right:1em; }
diff --git a/files/templates/part.breadcrumb.php b/files/templates/part.breadcrumb.php
index 20c436926c6..96342919df6 100644
--- a/files/templates/part.breadcrumb.php
+++ b/files/templates/part.breadcrumb.php
@@ -1,5 +1,5 @@
<?php foreach($_["breadcrumb"] as $crumb): ?>
- <div class='crumb' data-dir='<?php echo $crumb["dir"];?>' style='background-image:url("<?php echo image_path('core','breadcrumb-divider.png');?>")'>
+ <div class="crumb svg" data-dir='<?php echo $crumb["dir"];?>' style='background-image:url("<?php echo image_path('core','breadcrumb.png');?>")'>
<a href="<?php echo link_to("files", "index.php?dir=".$crumb["dir"]); ?>"><?php echo htmlspecialchars($crumb["name"]); ?></a>
</div>
- <?php endforeach; ?> \ No newline at end of file
+ <?php endforeach; ?>
diff --git a/lib/base.php b/lib/base.php
index 93b8e0b584d..2e735514347 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -149,9 +149,11 @@ OC_Group::setBackend( OC_Config::getValue( "groupbackend", "database" ));
OC_Util::addScript( "jquery-1.6.2.min" );
OC_Util::addScript( "jquery-ui-1.8.14.custom.min" );
OC_Util::addScript( "js" );
+OC_Util::addScript( "multiselect" );
OC_Util::addScript('search','result');
OC_Util::addStyle( "jquery-ui-1.8.14.custom" );
OC_Util::addStyle( "styles" );
+OC_Util::addStyle( "multiselect" );
// Load Apps
// This includes plugins for users and filesystems as well
diff --git a/lib/group.php b/lib/group.php
index 1161b9035fa..65a23989a27 100644
--- a/lib/group.php
+++ b/lib/group.php
@@ -171,11 +171,11 @@ class OC_Group {
*/
public static function addToGroup( $uid, $gid ){
// Does the user exist?
- if( !in_array( $uid, OC_User::getUsers())){
+ if( !OC_User::userExists($uid)){
return false;
}
// Does the group exist?
- if( !in_array( $gid, self::getGroups())){
+ if( !OC_Group::groupExists($gid)){
return false;
}
@@ -234,4 +234,21 @@ class OC_Group {
public static function getGroups(){
return self::$_backend->getGroups();
}
+
+ /**
+ * check if a group exists
+ * @param string $gid
+ * @return bool
+ */
+ public static function groupExists($gid){
+ return in_array( $gid, self::getGroups());
+ }
+
+ /**
+ * @brief get a list of all users in a group
+ * @returns array with user ids
+ */
+ public static function usersInGroup($gid){
+ return self::$_backend->usersInGroup();
+ }
}
diff --git a/lib/group/backend.php b/lib/group/backend.php
index ebee8aacb91..43f94e7ea1a 100644
--- a/lib/group/backend.php
+++ b/lib/group/backend.php
@@ -93,4 +93,10 @@ abstract class OC_Group_Backend {
* Returns a list with all groups
*/
public static function getGroups(){}
+
+ /**
+ * @brief get a list of all users in a group
+ * @returns array with user ids
+ */
+ public static function usersInGroup($gid){}
}
diff --git a/lib/group/database.php b/lib/group/database.php
index 6ca80b93985..8a9fc53d39f 100644
--- a/lib/group/database.php
+++ b/lib/group/database.php
@@ -53,7 +53,7 @@ class OC_Group_Database extends OC_Group_Backend {
*/
public static function createGroup( $gid ){
// Check for existence
- $query = OC_DB::prepare( "SELECT * FROM `*PREFIX*groups` WHERE gid = ?" );
+ $query = OC_DB::prepare( "SELECT gid FROM `*PREFIX*groups` WHERE gid = ?" );
$result = $query->execute( array( $gid ));
if( $result->numRows() > 0 ){
@@ -98,7 +98,7 @@ class OC_Group_Database extends OC_Group_Backend {
*/
public static function inGroup( $uid, $gid ){
// check
- $query = OC_DB::prepare( "SELECT * FROM `*PREFIX*group_user` WHERE gid = ? AND uid = ?" );
+ $query = OC_DB::prepare( "SELECT uid FROM `*PREFIX*group_user` WHERE gid = ? AND uid = ?" );
$result = $query->execute( array( $gid, $uid ));
return $result->numRows() > 0 ? true : false;
@@ -146,7 +146,7 @@ class OC_Group_Database extends OC_Group_Backend {
*/
public static function getUserGroups( $uid ){
// No magic!
- $query = OC_DB::prepare( "SELECT * FROM `*PREFIX*group_user` WHERE uid = ?" );
+ $query = OC_DB::prepare( "SELECT gid FROM `*PREFIX*group_user` WHERE uid = ?" );
$result = $query->execute( array( $uid ));
$groups = array();
@@ -164,7 +164,7 @@ class OC_Group_Database extends OC_Group_Backend {
* Returns a list with all groups
*/
public static function getGroups(){
- $query = OC_DB::prepare( "SELECT * FROM `*PREFIX*groups`" );
+ $query = OC_DB::prepare( "SELECT gid FROM `*PREFIX*groups`" );
$result = $query->execute();
$groups = array();
@@ -174,4 +174,18 @@ class OC_Group_Database extends OC_Group_Backend {
return $groups;
}
+
+ /**
+ * @brief get a list of all users in a group
+ * @returns array with user ids
+ */
+ public static function usersInGroup($gid){
+ $query=OC_DB::prepare('SELECT uid FROM *PREFIX*group_user WHERE gid=?');
+ $users=array();
+ $result=$query->execute(array($gid));
+ while($row=$result->fetchRow()){
+ $users[]=$row['uid'];
+ }
+ return $users;
+ }
}
diff --git a/lib/template.php b/lib/template.php
index 2ba26eebac8..bb225bdd82f 100644
--- a/lib/template.php
+++ b/lib/template.php
@@ -230,9 +230,7 @@ class OC_Template{
// Decide which page we show
if( $this->renderas == "user" ){
$page = new OC_Template( "core", "layout.user" );
- $search=new OC_Template( 'core', 'part.searchbox');
- $search->assign('searchurl',OC_Helper::linkTo( 'search', 'index.php' ));
- $page->assign('searchbox', $search->fetchPage());
+ $page->assign('searchurl',OC_Helper::linkTo( 'search', 'index.php' ));
if(array_search(OC_APP::getCurrentApp(),array('settings','admin','help'))!==false){
$page->assign('bodyid','body-settings');
}else{
diff --git a/search/css/results.css b/search/css/results.css
index c3147451e4a..440e68ee48f 100644
--- a/search/css/results.css
+++ b/search/css/results.css
@@ -1,4 +1,4 @@
-#searchresults { list-style:none; position:fixed; top:3.5em; right:0; z-index:100; background-color:#fff; overflow:hidden; text-overflow:ellipsis; max-height:80%; width:26.5em; padding-bottom:1em; -moz-box-shadow:0 0 10px #000; -webkit-box-shadow:0 0 10px #000; box-shadow:0 0 10px #000; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; }
+#searchresults { list-style:none; position:fixed; top:3.5em; right:0; z-index:75; background-color:#fff; overflow:hidden; text-overflow:ellipsis; max-height:80%; width:26.5em; padding-bottom:1em; -moz-box-shadow:0 0 10px #000; -webkit-box-shadow:0 0 10px #000; box-shadow:0 0 10px #000; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; }
#searchresults li.resultHeader { font-size:1.2em; font-weight:bold; border-bottom:solid 1px #CCC; padding:.2em; background-color:#eee; }
#searchresults li.result { margin-left:2em; }
#searchresults table { width:100%; table-layout:fixed; top:0; border-spacing:0; }