Filemanager - Add some actions for merge-print shares into email templates

This commit is contained in:
nathangray 2019-07-16 13:44:20 -06:00
parent 0538185b36
commit 87c4f0ff9c
4 changed files with 68 additions and 38 deletions

View File

@ -429,6 +429,57 @@ class Sharing extends \EGroupware\Api\Sharing
Vfs::$is_root = false;
}
/**
* Get actions for sharing an entry from filemanager
*
* @param string $appname
* @param int $group Current menu group
*/
public static function get_actions($appname, $group = 6)
{
$actions = parent::get_actions('filemanager', $group);
// This one makes no sense for filemanager
unset($actions['share']['children']['shareFiles']);
// Move these around to mesh nicely if collabora is available
$actions['share']['children']['shareReadonlyLink']['group'] = 2;
$actions['share']['children']['shareReadonlyLink']['order'] = 22;
$actions['share']['children']['shareWritable']['group'] = 3;
// Add in merge to document
if (class_exists($appname.'_merge'))
{
$documents = call_user_func(array($appname.'_merge', 'document_action'),
$GLOBALS['egw_info']['user']['preferences'][$appname]['document_dir'],
2, 'Insert in document', 'shareDocument_'
);
$documents['order'] = 25;
// Mail only
if ($documents['children']['message/rfc822'])
{
// Just email already filtered out
$documents['children'] = $documents['children']['message/rfc822']['children'];
}
foreach($documents['children'] as $key => &$document)
{
if(strpos($document['target'],'compose_') === FALSE)
{
unset($documents['children'][$key]);
continue;
}
$document['allowOnMultiple'] = true;
$document['onExecute'] = "javaScript:app.$appname.share_merge";
}
$documents['enabled'] = $documents['enabled'] && (boolean)$documents['children'] && !!($GLOBALS['egw_info']['user']['apps']['stylite']);
$actions['share']['children']['shareDocuments'] = $documents;
}
return $actions;
}
/**
* Generate link from share or share-token
*

View File

@ -238,6 +238,11 @@ class filemanager_merge extends Api\Storage\Merge
{
return $session;
}
else if (($session = \EGroupware\Api\Cache::getSession(Api\Sharing::class, "$app::$id")) &&
substr($session['share_path'], -strlen($path)) === $path)
{
return $session;
}
// Need to create the share here.
// No way to know here if it should be writable, or who it's going to
$mode = /* ? ? Sharing::WRITABLE :*/ Api\Sharing::READONLY;

View File

@ -176,29 +176,6 @@ class filemanager_ui
'onExecute' => Api\Header\UserAgent::mobile()?'javaScript:app.filemanager.viewEntry':'javaScript:app.filemanager.editprefs',
'mobileViewTemplate' => 'file?'.filemtime(Api\Etemplate\Widget\Template::rel2path('/filemanager/templates/mobile/file.xet'))
),
'share' => array(
'caption' => lang('Share files'),
'icon' => 'filemanager/mail_post_to',
'group' => $group,
'children' => array(
'shareReadonlyLink' => array(
'caption' => lang('Readonly Share link'),
'group' => 1,
'icon' => 'share',
'allowOnMultiple' => false,
'order' => 11,
'onExecute' => 'javaScript:app.filemanager.share_link'
),
'shareWritableLink' => array(
'caption' => lang('Writable Share link'),
'group' => 1,
'icon' => 'share',
'allowOnMultiple' => false,
'enableClass' => 'isDir',
'order' => 11,
'onExecute' => 'javaScript:app.filemanager.share_link'
)),
),
'saveas' => array(
'caption' => lang('Save as'),
'group' => $group,
@ -238,6 +215,7 @@ class filemanager_ui
'order' => 10,
'onExecute' => 'javaScript:app.filemanager.copy_link'
),
'share' => EGroupware\Api\Vfs\Sharing::get_actions('filemanager', ++$group)['share'],
'documents' => filemanager_merge::document_action(
$GLOBALS['egw_info']['user']['preferences']['filemanager']['document_dir'],
++$group, 'Insert in document', 'document_',
@ -287,17 +265,26 @@ class filemanager_ui
);
if (isset($GLOBALS['egw_info']['user']['apps']['mail'])) {
$actions['share']['children']['share_mail'] = array(
'caption' => lang('Mail'),
'icon' => 'mail',
'group' => 1,
'order' => 0,
'allowOnMultiple' => false,
);
foreach(Vfs\Sharing::$modes as $mode => $data)
{
$actions['share']['children']['mail_'.$mode] = array(
$actions['share']['children']['share_mail']['children']['mail_'.$mode] = array(
'caption' => $data['label'],
'hint' => $data['title'],
'icon' => $mode == Vfs\Sharing::ATTACH ?
'mail/attach' : 'api/link',
'group' => 2,
'onExecute' => 'javaScript:app.filemanager.mail',
);
if ($mode == Vfs\Sharing::ATTACH || $mode == Vfs\Sharing::LINK)
{
$actions['share']['children']['mail_'.$mode]['disableClass'] = 'isDir';
$actions['share']['children']['share_mail']['children']['mail_'.$mode]['disableClass'] = 'isDir';
}
}
}

View File

@ -1174,19 +1174,6 @@ app.classes.filemanager = AppJS.extend(
}
},
/**
* create a share-link for the given file or directory
* @param {object} _action egw actions
* @param {object} _senders selected nm row
* @returns {Boolean} returns false if not successful
*/
share_link: function(_action, _senders){
var path = this.id2path(_senders[0].id);
egw.json('filemanager_ui::ajax_action', [_action.id, path],
this._share_link_callback, this, true, this).sendRequest();
return true;
},
/**
* Share-link callback
* @param {object} _data