Merge branch 'master' into calendar_import
This commit is contained in:
commit
7ec2d6ce85
|
@ -15,10 +15,10 @@
|
||||||
#bottomcontrols img { margin-top: 0.35em; }
|
#bottomcontrols img { margin-top: 0.35em; }
|
||||||
#contacts_newcontact { float: left; margin: 0.2em 0 0 1em; }
|
#contacts_newcontact { float: left; margin: 0.2em 0 0 1em; }
|
||||||
#chooseaddressbook { float: right; margin: 0.2em 1em 0 0; }
|
#chooseaddressbook { float: right; margin: 0.2em 1em 0 0; }
|
||||||
#actionbar { height: 30px; width: 60px; position: fixed; right: 0px; top: 4em; margin: 0 0 0 0; padding: 0 0 0 0; z-index: 1000; }
|
#actionbar { position: relative; clear: both; height: 30px;}
|
||||||
#contacts_deletecard {position:relative; float:left; background:url('%webroot%/core/img/actions/delete.svg') no-repeat center; }
|
#contacts_deletecard {position:relative; float:left; background:url('%webroot%/core/img/actions/delete.svg') no-repeat center; }
|
||||||
#contacts_downloadcard {position:relative; float:left; background:url('%webroot%/core/img/actions/download.svg') no-repeat center; }
|
#contacts_downloadcard {position:relative; float:left; background:url('%webroot%/core/img/actions/download.svg') no-repeat center; }
|
||||||
#contacts_propertymenu { clear: both; max-width: 15em; margin: 2em; }
|
#contacts_propertymenu { clear: left; float:left; max-width: 15em; margin: 2em; }
|
||||||
#contacts_propertymenu_button { position:relative;top:0;left:0; margin: 0; }
|
#contacts_propertymenu_button { position:relative;top:0;left:0; margin: 0; }
|
||||||
#contacts_propertymenu_dropdown { background-color: #fff; position:relative; right:0; overflow:hidden; text-overflow:ellipsis; border: thin solid #1d2d44; box-shadow: 0 3px 5px #bbb; /* -moz-box-shadow:0 0 10px #000; -webkit-box-shadow:0 0 10px #000; box-shadow:0 0 10px #000; -moz-border-radius:0.5em; -webkit-border-radius:0.5em; border-radius:0.5em; -moz-border-radius:0.5em; -webkit-border-radius:0.5em;*/ border-radius: 3px; }
|
#contacts_propertymenu_dropdown { background-color: #fff; position:relative; right:0; overflow:hidden; text-overflow:ellipsis; border: thin solid #1d2d44; box-shadow: 0 3px 5px #bbb; /* -moz-box-shadow:0 0 10px #000; -webkit-box-shadow:0 0 10px #000; box-shadow:0 0 10px #000; -moz-border-radius:0.5em; -webkit-border-radius:0.5em; border-radius:0.5em; -moz-border-radius:0.5em; -webkit-border-radius:0.5em;*/ border-radius: 3px; }
|
||||||
#contacts_propertymenu li { display: block; font-weight: bold; height: 20px; }
|
#contacts_propertymenu li { display: block; font-weight: bold; height: 20px; }
|
||||||
|
|
|
@ -14,12 +14,16 @@ $contactid = isset($_GET['contactid']) ? $_GET['contactid'] : NULL;
|
||||||
$nl = "\n";
|
$nl = "\n";
|
||||||
if(isset($bookid)){
|
if(isset($bookid)){
|
||||||
$addressbook = OC_Contacts_App::getAddressbook($bookid);
|
$addressbook = OC_Contacts_App::getAddressbook($bookid);
|
||||||
$cardobjects = OC_Contacts_VCard::all($bookid);
|
//$cardobjects = OC_Contacts_VCard::all($bookid);
|
||||||
header('Content-Type: text/directory');
|
header('Content-Type: text/directory');
|
||||||
header('Content-Disposition: inline; filename=' . str_replace(' ', '_', $addressbook['displayname']) . '.vcf');
|
header('Content-Disposition: inline; filename=' . str_replace(' ', '_', $addressbook['displayname']) . '.vcf');
|
||||||
|
|
||||||
foreach($cardobjects as $card) {
|
$start = 0;
|
||||||
echo $card['carddata'] . $nl;
|
while($cardobjects = OC_Contacts_VCard::all($bookid, $start, 20)){
|
||||||
|
foreach($cardobjects as $card) {
|
||||||
|
echo $card['carddata'] . $nl;
|
||||||
|
}
|
||||||
|
$start += 20;
|
||||||
}
|
}
|
||||||
}elseif(isset($contactid)){
|
}elseif(isset($contactid)){
|
||||||
$data = OC_Contacts_App::getContactObject($contactid);
|
$data = OC_Contacts_App::getContactObject($contactid);
|
||||||
|
|
|
@ -9,10 +9,6 @@ $id = isset($_['id']) ? $_['id'] : '';
|
||||||
<input type="hidden" class="max_human_file_size" value="(max <?php echo $_['uploadMaxHumanFilesize']; ?>)">
|
<input type="hidden" class="max_human_file_size" value="(max <?php echo $_['uploadMaxHumanFilesize']; ?>)">
|
||||||
<input id="file_upload_start" type="file" accept="image/*" name="imagefile" />
|
<input id="file_upload_start" type="file" accept="image/*" name="imagefile" />
|
||||||
</form>
|
</form>
|
||||||
<div id="actionbar">
|
|
||||||
<button class="svg action" id="contacts_downloadcard" title="<?php echo $l->t('Download contact');?>"></button>
|
|
||||||
<button class="svg action" id="contacts_deletecard" title="<?php echo $l->t('Delete contact');?>"></button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="contact_photo" class="contactsection">
|
<div id="contact_photo" class="contactsection">
|
||||||
|
|
||||||
|
@ -108,19 +104,23 @@ $id = isset($_['id']) ? $_['id'] : '';
|
||||||
</form>
|
</form>
|
||||||
</div> <!-- contact_note -->
|
</div> <!-- contact_note -->
|
||||||
|
|
||||||
<div id="contacts_propertymenu">
|
<div id="actionbar">
|
||||||
<button class="button" id="contacts_propertymenu_button"><?php echo $l->t('Add field'); ?></button>
|
<div id="contacts_propertymenu">
|
||||||
<ul id="contacts_propertymenu_dropdown" role="menu" class="hidden">
|
<button class="button" id="contacts_propertymenu_button"><?php echo $l->t('Add field'); ?></button>
|
||||||
<li><a role="menuitem" data-type="ORG"><?php echo $l->t('Organization'); ?></a></li>
|
<ul id="contacts_propertymenu_dropdown" role="menu" class="hidden">
|
||||||
<li><a role="menuitem" data-type="NICKNAME"><?php echo $l->t('Nickname'); ?></a></li>
|
<li><a role="menuitem" data-type="ORG"><?php echo $l->t('Organization'); ?></a></li>
|
||||||
<li><a role="menuitem" data-type="BDAY"><?php echo $l->t('Birthday'); ?></a></li>
|
<li><a role="menuitem" data-type="NICKNAME"><?php echo $l->t('Nickname'); ?></a></li>
|
||||||
<li><a role="menuitem" data-type="TEL"><?php echo $l->t('Phone'); ?></a></li>
|
<li><a role="menuitem" data-type="BDAY"><?php echo $l->t('Birthday'); ?></a></li>
|
||||||
<li><a role="menuitem" data-type="EMAIL"><?php echo $l->t('Email'); ?></a></li>
|
<li><a role="menuitem" data-type="TEL"><?php echo $l->t('Phone'); ?></a></li>
|
||||||
<li><a role="menuitem" data-type="ADR"><?php echo $l->t('Address'); ?></a></li>
|
<li><a role="menuitem" data-type="EMAIL"><?php echo $l->t('Email'); ?></a></li>
|
||||||
<li><a role="menuitem" data-type="NOTE"><?php echo $l->t('Note'); ?></a></li>
|
<li><a role="menuitem" data-type="ADR"><?php echo $l->t('Address'); ?></a></li>
|
||||||
<li><a role="menuitem" data-type="URL"><?php echo $l->t('Web site'); ?></a></li>
|
<li><a role="menuitem" data-type="NOTE"><?php echo $l->t('Note'); ?></a></li>
|
||||||
<li><a role="menuitem" data-type="CATEGORIES"><?php echo $l->t('Groups'); ?></a></li>
|
<li><a role="menuitem" data-type="URL"><?php echo $l->t('Web site'); ?></a></li>
|
||||||
</ul>
|
<li><a role="menuitem" data-type="CATEGORIES"><?php echo $l->t('Groups'); ?></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<button class="svg action" id="contacts_downloadcard" title="<?php echo $l->t('Download contact');?>"></button>
|
||||||
|
<button class="svg action" id="contacts_deletecard" title="<?php echo $l->t('Delete contact');?>"></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div> <!-- card -->
|
</div> <!-- card -->
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
OCP\JSON::checkAppEnabled('files_external');
|
||||||
|
|
||||||
|
$view = \OCP\Files::getStorage("files_external");
|
||||||
|
$from = $_FILES['rootcert_import']['tmp_name'];
|
||||||
|
$to = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("").$_FILES['rootcert_import']['name'];
|
||||||
|
move_uploaded_file($from, $to);
|
||||||
|
|
||||||
|
header("Location: settings/personal.php");
|
||||||
|
exit;
|
||||||
|
?>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
OCP\JSON::checkAppEnabled('files_external');
|
||||||
|
|
||||||
|
$view = \OCP\Files::getStorage("files_external");
|
||||||
|
$cert = $_POST['cert'];
|
||||||
|
$file = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("").$cert;
|
||||||
|
unlink($file);
|
||||||
|
?>
|
|
@ -1,4 +1,4 @@
|
||||||
OC.MountConfig={
|
OC.MountConfig={
|
||||||
saveStorage:function(tr) {
|
saveStorage:function(tr) {
|
||||||
var mountPoint = $(tr).find('.mountPoint input').val();
|
var mountPoint = $(tr).find('.mountPoint input').val();
|
||||||
if (mountPoint == '') {
|
if (mountPoint == '') {
|
||||||
|
@ -68,7 +68,6 @@ OC.MountConfig={
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
$('.chzn-select').chosen();
|
$('.chzn-select').chosen();
|
||||||
|
|
||||||
$('#selectBackend').live('change', function() {
|
$('#selectBackend').live('change', function() {
|
||||||
|
@ -116,8 +115,11 @@ $(document).ready(function() {
|
||||||
$('td.remove>img').live('click', function() {
|
$('td.remove>img').live('click', function() {
|
||||||
var tr = $(this).parent().parent();
|
var tr = $(this).parent().parent();
|
||||||
var mountPoint = $(tr).find('.mountPoint input').val();
|
var mountPoint = $(tr).find('.mountPoint input').val();
|
||||||
if (mountPoint == '') {
|
if (!mountPoint) {
|
||||||
return false;
|
var row=this.parentNode.parentNode;
|
||||||
|
$.post(OC.filePath('files_external', 'ajax', 'removeRootCertificate.php'), { cert: row.id });
|
||||||
|
$(tr).remove();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if ($('#externalStorage').data('admin') === true) {
|
if ($('#externalStorage').data('admin') === true) {
|
||||||
var isPersonal = false;
|
var isPersonal = false;
|
||||||
|
|
|
@ -237,6 +237,21 @@ class OC_Mount_Config {
|
||||||
$content .= ");\n?>";
|
$content .= ");\n?>";
|
||||||
@file_put_contents($file, $content);
|
@file_put_contents($file, $content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all user uploaded ssl root certificates
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getCertificates() {
|
||||||
|
$view = \OCP\Files::getStorage('files_external');
|
||||||
|
$path=\OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("");
|
||||||
|
$result = array();
|
||||||
|
$handle = opendir($path);
|
||||||
|
while (false !== ($file = readdir($handle))) {
|
||||||
|
if($file != '.' && $file != '..') $result[] = $file;
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ unset($backends['OC_Filestorage_Local']);
|
||||||
$tmpl = new OCP\Template('files_external', 'settings');
|
$tmpl = new OCP\Template('files_external', 'settings');
|
||||||
$tmpl->assign('isAdminPage', false, false);
|
$tmpl->assign('isAdminPage', false, false);
|
||||||
$tmpl->assign('mounts', OC_Mount_Config::getPersonalMountPoints());
|
$tmpl->assign('mounts', OC_Mount_Config::getPersonalMountPoints());
|
||||||
|
$tmpl->assign('certs', OC_Mount_Config::getCertificates());
|
||||||
$tmpl->assign('backends', $backends);
|
$tmpl->assign('backends', $backends);
|
||||||
return $tmpl->fetchPage();
|
return $tmpl->fetchPage();
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<form id="files_external">
|
<form id="files_external" method="post" enctype="multipart/form-data" action="/owncloud/?app=files_external&getfile=ajax%2FaddRootCertificate.php">
|
||||||
<fieldset class="personalblock">
|
<fieldset class="personalblock">
|
||||||
<legend><strong><?php echo $l->t('External Storage'); ?></strong></legend>
|
<legend><strong><?php echo $l->t('External Storage'); ?></strong></legend>
|
||||||
<table id="externalStorage" data-admin='<?php echo json_encode($_['isAdminPage']); ?>'>
|
<table id="externalStorage" data-admin='<?php echo json_encode($_['isAdminPage']); ?>'>
|
||||||
|
@ -79,6 +79,29 @@
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<?php if (!$_['isAdminPage']): ?>
|
||||||
|
<table id="sslCertificate" data-admin='<?php echo json_encode($_['isAdminPage']); ?>'>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><?php echo $l->t('SSL root certificates'); ?></th>
|
||||||
|
<th> </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody width="100%">
|
||||||
|
<?php foreach ($_['certs'] as $rootCert): ?>
|
||||||
|
<tr id="<?php echo $rootCert ?>">
|
||||||
|
<td class="rootCert"><?php echo $rootCert ?></td>
|
||||||
|
<td <?php echo ($rootCert != '') ? 'class="remove"' : 'style="visibility:hidden;"'; ?>><img alt="<?php echo $l->t('Delete'); ?>" title="<?php echo $l->t('Delete'); ?>" class="svg action" src="<?php echo image_path('core', 'actions/delete.svg'); ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<input type="file" id="rootcert_import" name="rootcert_import" style="width:230px;">
|
||||||
|
<input type="submit" name="cert_import" value="<?php echo $l->t('Import Root Certificate'); ?>" />
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if ($_['isAdminPage']): ?>
|
<?php if ($_['isAdminPage']): ?>
|
||||||
<br />
|
<br />
|
||||||
<input type="checkbox" name="allowUserMounting" id="allowUserMounting" value="1" <?php if ($_['allowUserMounting'] == 'yes') echo ' checked="checked"'; ?> />
|
<input type="checkbox" name="allowUserMounting" id="allowUserMounting" value="1" <?php if ($_['allowUserMounting'] == 'yes') echo ' checked="checked"'; ?> />
|
||||||
|
@ -86,4 +109,4 @@
|
||||||
<em><?php echo $l->t('Allow users to mount their own external storage'); ?></em>
|
<em><?php echo $l->t('Allow users to mount their own external storage'); ?></em>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -4,6 +4,72 @@
|
||||||
* See the COPYING-README file.
|
* See the COPYING-README file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
UserList={
|
||||||
|
useUndo:true,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initiate user deletion process in UI
|
||||||
|
* @param string uid the user ID to be deleted
|
||||||
|
*
|
||||||
|
* Does not actually delete the user; it sets them for
|
||||||
|
* deletion when the current page is unloaded, at which point
|
||||||
|
* finishDelete() completes the process. This allows for 'undo'.
|
||||||
|
*/
|
||||||
|
do_delete:function( uid ) {
|
||||||
|
|
||||||
|
UserList.deleteUid = uid;
|
||||||
|
|
||||||
|
// Set undo flag
|
||||||
|
UserList.deleteCanceled = false;
|
||||||
|
|
||||||
|
// Hide user in table to reflect deletion
|
||||||
|
$(this).parent().parent().hide();
|
||||||
|
$('tr').filterAttr( 'data-uid', UserList.deleteUid ).hide();
|
||||||
|
|
||||||
|
// Provide user with option to undo
|
||||||
|
$('#notification').text(t('files','undo delete user'));
|
||||||
|
$('#notification').data('deleteuser',true);
|
||||||
|
$('#notification').fadeIn();
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Delete a user via ajax
|
||||||
|
* @param bool ready whether to use ready() upon completion
|
||||||
|
*
|
||||||
|
* Executes deletion via ajax of user identified by property deleteUid
|
||||||
|
* if 'undo' has not been used. Completes the user deletion procedure
|
||||||
|
* and reflects success in UI.
|
||||||
|
*/
|
||||||
|
finishDelete:function( ready ){
|
||||||
|
|
||||||
|
// Check deletion has not been undone
|
||||||
|
if( !UserList.deleteCanceled && UserList.deleteUid ){
|
||||||
|
|
||||||
|
// Delete user via ajax
|
||||||
|
$.post(
|
||||||
|
OC.filePath('settings','ajax','removeuser.php'),
|
||||||
|
{username:UserList.deleteUid},
|
||||||
|
function(result){
|
||||||
|
|
||||||
|
// Remove undo option, & remove user from table
|
||||||
|
boolOperationFinished(
|
||||||
|
data, function(){
|
||||||
|
$('#notification').fadeOut();
|
||||||
|
$('tr').filterAttr( 'data-uid', username ).remove();
|
||||||
|
UserList.deleteCanceled=true;
|
||||||
|
UserList.deleteFiles=null;
|
||||||
|
if( ready ){
|
||||||
|
ready();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
function setQuota(uid,quota,ready){
|
function setQuota(uid,quota,ready){
|
||||||
$.post(
|
$.post(
|
||||||
|
@ -61,15 +127,12 @@ $(document).ready(function(){
|
||||||
});
|
});
|
||||||
|
|
||||||
$('td.remove>img').live('click',function(event){
|
$('td.remove>img').live('click',function(event){
|
||||||
var uid=$(this).parent().parent().data('uid');
|
|
||||||
$.post(
|
var uid = $(this).parent().parent().data('uid');
|
||||||
OC.filePath('settings','ajax','removeuser.php'),
|
|
||||||
{username:uid},
|
// Call function for handling delete/undo
|
||||||
function(result){
|
UserList.do_delete( uid );
|
||||||
|
|
||||||
}
|
|
||||||
);
|
|
||||||
$(this).parent().parent().remove();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$('td.password>img').live('click',function(event){
|
$('td.password>img').live('click',function(event){
|
||||||
|
@ -222,4 +285,19 @@ $(document).ready(function(){
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
// Handle undo notifications
|
||||||
|
$('#notification').hide();
|
||||||
|
$('#notification').click(function(){
|
||||||
|
if($('#notification').data('deleteuser'))
|
||||||
|
{
|
||||||
|
$( 'tr' ).filterAttr( 'data-uid', UserList.deleteUid ).show();
|
||||||
|
UserList.deleteCanceled=true;
|
||||||
|
UserList.deleteFiles=null;
|
||||||
|
}
|
||||||
|
$('#notification').fadeOut();
|
||||||
|
});
|
||||||
|
UserList.useUndo=('onbeforeunload' in window)
|
||||||
|
$(window).bind('beforeunload', function (){
|
||||||
|
UserList.finishDelete(null);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -52,6 +52,8 @@ foreach($_["groups"] as $group) {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id='notification'></div>
|
||||||
|
|
||||||
<table data-groups="<?php echo implode(', ',$allGroups);?>">
|
<table data-groups="<?php echo implode(', ',$allGroups);?>">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
Loading…
Reference in New Issue