Revision 482 (by ahitrov, 2015/03/03 14:30:48) |
tag name cleaning
tag control prompt
|
% if ( $object->id ) {
<script type="text/javascript">
<!--
function <% $name %>_onAddTag(tag) {
$.ajax({
'url' : '/contenido/tag/ajax/manage.html',
'type' : 'GET',
'data' : { 'action' : 'add', 'id' : <% $object->id %>, 'class' : '<% $object->class %>', 'tag' : tag },
'dataType' : 'json',
'success' : function( data ) {
if ( data.fallback ) {
alert('Не могу добавить тег ' + tag + '. Откат');
$('#<% $name%>_text').removeTag(tag);
}
}
});
}
function <% $name %>_onRemoveTag(tag) {
$.ajax({
'url' : '/contenido/tag/ajax/manage.html',
'type' : 'GET',
'data' : { 'action' : 'remove', 'id' : <% $object->id %>, 'class' : '<% $object->class %>', 'tag' : tag },
'dataType' : 'json',
'success' : function( data ) {
if ( data.fallback ) {
alert('Не могу удалить тег ' + tag + '. Откат');
$('#<% $name%>_text').addTag(tag);
}
}
});
}
$(document).ready(function() {
$('#<% $name %>_text').tagsInput({
'width' : 'auto',
'height' : '60px',
'minChars' : 3,
'autocomplete_url' : '/contenido/tag/ajax/search.html?id=<% $object->id %>&class=<% $object->class %>',
'onAddTag' : <% $name %>_onAddTag,
'onRemoveTag' : <% $name %>_onRemoveTag,
'defaultText' : 'Добавьте тег'
});
% if ( @tags ) {
$('#<% $name %>_text').importTags('<% join(',', map { $_->name } @tags) %>');
% }
});
//-->
</script>
<div style="width:95%;">
<input type="text" name="<% $name %>" id="<% $name %>_text" placeholder="Tags" class="tm-input"/>
<div class="rem">После завершения ввода тега нажмите <Enter>. Если в процессе набора текста появится список тегов, среди которых присутствует набираемый тег, выберите тег из списка.</div>
</div>
% } else {
<div style="width:95%; padding:10px; border:1px solid green; background:#f0fff0">
<div style="color:green">Ввод тегов возможен только после сохранения документа</div>
</div>
% }
<%once>
use Data::Recursive::Encode;
use JSON::XS;
my $json = JSON::XS->new->utf8;
</%once>
<%args>
$object
$name => undef
$check => undef
$prop => {}
</%args>
<%init>
my @tags;
if ( $object->id ) {
@tags = $keeper->get_documents(
class => 'tag::Tag',
lclass => 'tag::Cloud',
ldest => $object->id,
ldestclass => $object->class,
);
}
my $value;
unless ( $prop->{virtual} ) {
if ( ref $object->$name ) {
$value = $object->$name;
} elsif ( $object->$name ) {
$value = Data::Recursive::Encode->encode_utf8( $json->decode( $object->$name ) );
}
}
</%init>