5d8de7587d
This changes creates a new form in addlink page allowing to create multiple bookmarks at once more easily. It focuses on re-using as much existing code and template component as possible. These changes includes: - a new form in addlink (hidden behind a button by default), containing a text area for URL, and tags/private status to apply to created links - this form displays a new template called editlink.batch, itself including editlink template multiple times - User interation in this new templates are handle by a new JS script (shaare-batch.js) making AJAX requests, and therefore does not need page reloading - ManageShaareController has been split into 3 distinct controllers: + ShaareAdd: displays addlink template + ShaareManage: various operation applied on existing shaares (change visibility, pin, deletion, etc.) + ShaarePublish: handles creation/edit forms and saving Shaare's form - Updated translations Fixes #137
121 lines
4.2 KiB
HTML
121 lines
4.2 KiB
HTML
{if="empty($batch_mode)"}
|
|
<!DOCTYPE html>
|
|
<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
|
|
<head>
|
|
{include="includes"}
|
|
</head>
|
|
<body>
|
|
{include="page.header"}
|
|
{else}
|
|
{ignore}Lil hack: when included in a loop in batch mode, `$value` is assigned by RainTPL with template vars.{/ignore}
|
|
{function="extract($value) ? '' : ''"}
|
|
{/if}
|
|
<div id="editlinkform" class="edit-link-container" class="pure-g">
|
|
<div class="pure-u-lg-1-5 pure-u-1-24"></div>
|
|
<form method="post"
|
|
name="linkform"
|
|
action="{$base_path}/admin/shaare"
|
|
class="page-form pure-u-lg-3-5 pure-u-22-24 page-form page-form-light"
|
|
>
|
|
{$asyncLoadClass=$link_is_new && $async_metadata && empty($link.title) ? 'loading-input' : ''}
|
|
|
|
<h2 class="window-title">
|
|
{if="!$link_is_new"}{'Edit Shaare'|t}{else}{'New Shaare'|t}{/if}
|
|
</h2>
|
|
{if="isset($link.id)"}
|
|
<input type="hidden" name="lf_id" value="{$link.id}">
|
|
{/if}
|
|
{if="!$link_is_new"}<div class="created-date">{'Created:'|t} {$link.created|format_date}</div>{/if}
|
|
<div>
|
|
<label for="lf_url">{'URL'|t}</label>
|
|
</div>
|
|
<div>
|
|
<input type="text" name="lf_url" id="lf_url" value="{$link.url}" class="lf_input">
|
|
</div>
|
|
<div>
|
|
<label for="lf_title">{'Title'|t}</label>
|
|
</div>
|
|
<div class="{$asyncLoadClass}">
|
|
<input type="text" name="lf_title" id="lf_title" value="{$link.title}"
|
|
class="lf_input {if="!$async_metadata"}autofocus{/if}"
|
|
>
|
|
<div class="icon-container">
|
|
<i class="loader"></i>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<label for="lf_description">{'Description'|t}</label>
|
|
</div>
|
|
<div class="{if="$retrieve_description"}{$asyncLoadClass}{/if}">
|
|
<textarea name="lf_description" id="lf_description" class="autofocus">{$link.description}</textarea>
|
|
<div class="icon-container">
|
|
<i class="loader"></i>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<label for="lf_tags">{'Tags'|t}</label>
|
|
</div>
|
|
<div class="{if="$retrieve_description"}{$asyncLoadClass}{/if}">
|
|
<input type="text" name="lf_tags" id="lf_tags" value="{$link.tags}" class="lf_input autofocus"
|
|
data-list="{loop="$tags"}{$key}, {/loop}" data-multiple data-autofirst autocomplete="off" >
|
|
<div class="icon-container">
|
|
<i class="loader"></i>
|
|
</div>
|
|
</div>
|
|
|
|
<div>
|
|
<input type="checkbox" name="lf_private" id="lf_private"
|
|
{if="($link_is_new && $default_private_links || $link.private == true)"}
|
|
checked="checked"
|
|
{/if}>
|
|
<label for="lf_private">{'Private'|t}</label>
|
|
</div>
|
|
|
|
{if="$formatter==='markdown'"}
|
|
<div class="md_help">
|
|
{'Description will be rendered with'|t}
|
|
<a href="http://daringfireball.net/projects/markdown/syntax" title="{'Markdown syntax documentation'|t}">
|
|
{'Markdown syntax'|t}
|
|
</a>.
|
|
</div>
|
|
{/if}
|
|
|
|
<div id="editlink-plugins">
|
|
{loop="$edit_link_plugin"}
|
|
{$value}
|
|
{/loop}
|
|
</div>
|
|
|
|
|
|
<div class="submit-buttons center">
|
|
{if="!empty($batch_mode)"}
|
|
<a href="#" class="button button-grey" name="cancel-batch-link"
|
|
title="{'Remove this bookmark from batch creation/modification.'}"
|
|
>
|
|
{'Cancel'|t}
|
|
</a>
|
|
{/if}
|
|
<input type="submit" name="save_edit" class="" id="button-save-edit"
|
|
value="{if="$link_is_new"}{'Save'|t}{else}{'Apply Changes'|t}{/if}">
|
|
{if="!$link_is_new"}
|
|
<a href="{$base_path}/admin/shaare/delete?id={$link.id}&token={$token}"
|
|
title="" name="delete_link" class="button button-red confirm-delete">
|
|
{'Delete'|t}
|
|
</a>
|
|
{/if}
|
|
</div>
|
|
|
|
<input type="hidden" name="token" value="{$token}">
|
|
<input type="hidden" name="source" value="{$source}">
|
|
{if="$http_referer"}
|
|
<input type="hidden" name="returnurl" value="{$http_referer}">
|
|
{/if}
|
|
</form>
|
|
</div>
|
|
|
|
{if="empty($batch_mode)"}
|
|
{include="page.footer"}
|
|
{if="$link_is_new && $async_metadata"}<script src="{$asset_path}/js/metadata.min.js?v={$version_hash}#"></script>{/if}
|
|
</body>
|
|
</html>
|
|
{/if}
|