You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

283 lines
13 KiB

<div id="display_f{$field.fieldId|escape}" class="files-field display_f{$field.fieldId|escape} uninitialized {if $data.replaceFile}replace{/if}" data-galleryid="{$field.galleryId|escape}" data-firstfile="{$field.firstfile|escape}" data-filter="{$field.filter|escape}" data-limit="{$field.limit|escape}">
{if $field.canUpload}
{if $field.limit}
{if $field.limit == 1}
{remarksbox _type=info title="{tr}Attached files limitation{/tr}"}
{tr }The amount of files that can be attached is limited to <strong>1</strong>. The latest file will be preserved.{/tr}
{/remarksbox}
{else}
{remarksbox _type=info title="{tr}Attached files limitation{/tr}"}
{tr _0=$field.limit}The amount of files that can be attached is limited to <strong>%0</strong>. The latest files will be preserved.{/tr}
{/remarksbox}
{/if}
{/if}
<ol class="tracker-item-files current-list">
{foreach from=$field.files item=info}
<li data-file-id="{$info.fileId|escape}" class="m-1">
{if $prefs.vimeo_upload eq 'y' and $field.options_map.displayMode eq 'vimeo'}
{icon name='vimeo'}
{elseif $field.options_map.displayMode eq 'img'}
<img src="tiki-download_file.php?fileId={$info.fileId|escape}&display&y=24" height="24">
{$info.name|escape}
{elseif $field.options_map.displayMode eq 'barelink'}
<a href="{$info.fileId|sefurl:'file'}">
{$info.name|escape}
</a>
{else}
{$info.fileId|sefurl:'file'|iconify:$info.filetype:$info.fileId:2}
<a href="{$info.fileId|sefurl:'file'}" data-box="box">
{$info.name|escape}
</a>
{/if}
<a href="#" class="file-delete-icon text-danger">
{icon name='delete'}
</a>
</li>
{/foreach}
</ol>
<input class="input" type="text" name="{$field.ins_id|escape}" value="{$field.value|escape}" style="display: none">
{if $field.options_map.displayMode eq 'vimeo'}
{wikiplugin _name='vimeo' fromFieldId=$field.fieldId|escape fromItemId=$item.itemId|escape galleryId=$field.galleryId|escape}{/wikiplugin}
{else}
{if $field.options_map.uploadInModal neq 'n'}
<a href="{service controller=file action=uploader uploadInModal=1 galleryId=$field.galleryId limit=$field.limit|default:100 type=$field.filter image_max_size_x=$field.image_x image_max_size_y=$field.image_y addDecriptionOnUpload=$data.addDecriptionOnUpload trackerId=$field.trackerId requireTitle=$field.requireTitle}" class="btn btn-primary upload-files">
{if $field.limit !== 1}{tr}Upload Files{/tr}{else}{tr}Upload File{/tr}{/if}
</a>
{else}
<div class="upload-files-inline-form">
{service_inline controller=file action=uploader uploadInModal=0 galleryId=$field.galleryId limit=$field.limit|default:100 type=$field.filter image_max_size_x=$field.image_x image_max_size_y=$field.image_y addDecriptionOnUpload=$data.addDecriptionOnUpload}
</div>
{/if}
{/if}
{if $context.canBrowse}
{if $prefs.fgal_elfinder_feature eq 'y'}
{button href='tiki-list_file_gallery.php' _text="{tr}Browse files{/tr}" _onclick=$context.onclick title="{tr}Browse files{/tr}"}
{else}
<a href="{service controller=file action=browse galleryId=$context.galleryId limit=$field.limit|default:100 type=$field.filter image_x=$field.image_x image_y=$field.image_y}" class="btn btn-primary browse-files">{tr}Browse Files{/tr}</a>
{/if}
{/if}
{if $prefs.fgal_upload_from_source eq 'y' and $field.canUpload}
<fieldset>
{if $prefs.vimeo_upload eq 'y' and $field.options_map.displayMode eq 'vimeo'}
<label for="vimeourl_{$field.ins_id|escape}" class="small">
{tr}Link to existing Vimeo URL{/tr}
</label>
<input class="url vimeourl form-control" name="vimeourl" id="vimeourl_{$field.ins_id|escape}" placeholder="https://vimeo.com/..." data-mode="vimeo">
<input type="hidden" class="reference" name="reference" value="1">
{else}
<label for="url_{$field.ins_id|escape}" class="small">
{tr}Upload from URL{/tr}
</label>
<input class="url form-control" name="url" id="url_{$field.ins_id|escape}" placeholder="https://">
<input type="hidden" class="reference" name="reference" value="0">
{/if}
<p class="description">
{tr}Type or paste the URL and press ENTER{/tr}
</p>
</fieldset>
{/if}
{else}
{remarksbox type="error" close="n" title="{tr}You do not have permission to upload files to this gallery.{/tr}" }
{/remarksbox}
{/if}
</div>
{if $field.canUpload}
{jq}
$('.files-field.uninitialized').removeClass('uninitialized').each(function () {
var $self = $(this);
var $files = $('.current-list', this);
var $warning = $('.alert', this);
var $field = $('.input', this);
var $url = $('.url', this);
var replaceFile = $(this).is('.replace');
function toggleWarning() {
var limit = $self.data('limit');
if (limit) {
if ($files.children().length > limit) {
$warning.show();
$files.children().css('text-decoration', 'line-through');
$files.children().slice(-5).css('text-decoration', '');
} else {
$files.children().css('text-decoration', '');
$warning.hide();
}
}
}
function addFile(fileId, type, name) {
var li = $('<li>').appendTo($files); li.text(name).data('file-id', fileId);
$field.input_csv('add', ',', fileId);
li.prepend($.fileTypeIcon(fileId, { type: type, name: name }));
li.append($('<a class="file-delete-icon text-danger">{{icon name='delete'}}</a>'));
if (replaceFile && $self.data('firstfile') > 0) {
li.prev('li').remove();
}
if (! $self.data('firstfile')) {
$self.data('firstfile', fileId);
}
$field.change();
toggleWarning();
}
$field.hide();
toggleWarning();
$self.find('.btn.upload-files').clickModal({
success: function (data) {
var $ff = $(this).parents(".files-field");
$field = $(".input", $ff);
$files = $(".current-list", $ff);
$.each(data.files, function (k, file) {
addFile(file.fileId, file.type, file.label);
});
$.closeModal();
}
});
$self.find('.btn.browse-files').on('click', function () {
if (! $(this).data('initial-href')) {
$(this).data('initial-href', $(this).attr('href'));
}
// Before the dialog handler triggers, replace the href with one including current files
$(this).attr('href', $(this).data('initial-href') + '&file=' + $field.val());
});
$self.find('.btn.browse-files').clickModal({
size: 'modal-lg',
success: function (data) {
var $ff = $(this).parents(".files-field");
$field = $(".input", $ff);
$files = $(".current-list", $ff);
$files.empty();
$field.val('');
$.each(data.files, function (k, file) {
addFile(file.fileId, file.type, file.name);
});
$.closeModal();
}
});
$files.find('input').hide();
// Delete for previously existing and to be added files
$files.parent().on('click', '.file-delete-icon', function (e) {
var fileId = $(e.target).closest('li').data('file-id');
if (fileId) {
$field.input_csv('delete', ',', fileId);
$(e.target).closest('li').remove();
$field.change();
toggleWarning();
}
return false;
});
$url.keypress(function (e) {
if (e.which === 13) {
var $this = $(this);
var url = $this.val();
$this.attr('disabled', true).clearError();
$.ajax({
type: 'POST',
url: $.service('file', 'remote'),
dataType: 'json',
data: {
galleryId: $self.data('galleryid'),
url: url,
reference: $this.next('.reference').val()
},
success: function (data) {
var $ff = $this.parents(".files-field");
$field = $(".input", $ff);
$files = $(".current-list", $ff);
addFile(data.fileId, data.type, data.name);
$this.val('');
},
error: function (jqxhr) {
$this.showError(jqxhr);
},
complete: function () {
$this.removeAttr('disabled');
}
});
return false;
}
});
window.handleFinderFile = function (file, elfinder) {
var hash = "";
if (typeof file === "string") {
var m = file.match(/target=([^&]*)/);
if (!m || m.length < 2) {
return false; // error?
}
hash = m[1];
} else {
hash = file.hash;
}
$.ajax({
type: 'GET',
url: $.service('file_finder', 'finder'),
dataType: 'json',
data: {
cmd: "tikiFileFromHash",
hash: hash
},
success: function (data) {
var eventOrigin = $("body").data("eventOrigin");
if (eventOrigin) {
var $ff = $(eventOrigin).parents(".files-field");
$field = $(".input", $ff);
$files = $(".current-list", $ff);
}
addFile(data.fileId, data.filetype, data.name);
},
error: function (jqxhr) {
},
complete: function () {
$(window).data("elFinderDialog").dialog("close");
$($(window).data("elFinderDialog")).remove();
$(window).data("elFinderDialog", null);
return false;
}
});
};
handleVimeoFile = function (link, data) {
var eventOrigin = link;
if (eventOrigin) {
var $ff = $(eventOrigin).parents(".files-field");
$field = $(".input", $ff);
$files = $(".current-list", $ff);
}
addFile(data.fileId, data.filetype, data.name);
};
});
{/jq}
{if $prefs.vimeo_upload eq 'y' and $field.options_map.displayMode eq 'vimeo' and $prefs.feature_jquery_validation eq 'y'}
{jq}
$.validator.addMethod("isVimeoUrl", function(value, element) {
return this.optional(element) || value.match(/http[s]?\:\/\/(?:www\.)?vimeo\.com.*\/\d{4}/);
}, tr("* URL format is incorrect. It should start with 'https://vimeo.com/' and contain a video id of at least 4 digits '\nnnnnnn'"));
$.validator.addClassRules({
vimeourl : { isVimeoUrl : true }
});
{/jq}
{/if}
{/if}