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">После завершения ввода тега нажмите &lt;Enter&gt;. Если в процессе набора текста появится список тегов, среди которых присутствует набираемый тег, выберите тег из списка.</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>