Line # Revision Author
1 480 ahitrov % if ( $object->id ) {
2 <script type="text/javascript">
3 <!--
4 function <% $name %>_onAddTag(tag) {
5 $.ajax({
6 'url' : '/contenido/tag/ajax/manage.html',
7 'type' : 'GET',
8 'data' : { 'action' : 'add', 'id' : <% $object->id %>, 'class' : '<% $object->class %>', 'tag' : tag },
9 'dataType' : 'json',
10 'success' : function( data ) {
11 if ( data.fallback ) {
12 alert('Не могу добавить тег ' + tag + '. Откат');
13 $('#<% $name%>_text').removeTag(tag);
14 }
15 }
16 });
17 }
18
19 function <% $name %>_onRemoveTag(tag) {
20 $.ajax({
21 'url' : '/contenido/tag/ajax/manage.html',
22 'type' : 'GET',
23 'data' : { 'action' : 'remove', 'id' : <% $object->id %>, 'class' : '<% $object->class %>', 'tag' : tag },
24 'dataType' : 'json',
25 'success' : function( data ) {
26 if ( data.fallback ) {
27 alert('Не могу удалить тег ' + tag + '. Откат');
28 $('#<% $name%>_text').addTag(tag);
29 }
30 }
31 });
32 }
33
34 $(document).ready(function() {
35
36 $('#<% $name %>_text').tagsInput({
37 'width' : 'auto',
38 'height' : '60px',
39 'minChars' : 3,
40 'autocomplete_url' : '/contenido/tag/ajax/search.html?id=<% $object->id %>&class=<% $object->class %>',
41 'onAddTag' : <% $name %>_onAddTag,
42 'onRemoveTag' : <% $name %>_onRemoveTag,
43 'defaultText' : 'Добавьте тег'
44 });
45
46 % if ( @tags ) {
47 $('#<% $name %>_text').importTags('<% join(',', map { $_->name } @tags) %>');
48 % }
49
50 });
51 //-->
52 </script>
53 <div style="width:95%;">
54 <input type="text" name="<% $name %>" id="<% $name %>_text" placeholder="Tags" class="tm-input"/>
55 </div>
56 % } else {
57 <div style="width:95%; padding:10px; border:1px solid green; background:#f0fff0">
58 <div style="color:green">Ввод тегов возможен только после сохранения документа</div>
59 </div>
60 % }
61 <%once>
62
63 use Data::Recursive::Encode;
64 use JSON::XS;
65 my $json = JSON::XS->new->utf8;
66
67 </%once>
68 <%args>
69
70 $object
71 $name => undef
72 $check => undef
73 $prop => {}
74
75 </%args>
76 <%init>
77
78 my @tags;
79 if ( $object->id ) {
80 @tags = $keeper->get_documents(
81 class => 'tag::Tag',
82 lclass => 'tag::Cloud',
83 ldest => $object->id,
84 ldestclass => $object->class,
85 );
86 }
87 my $value;
88 unless ( $prop->{virtual} ) {
89 if ( ref $object->$name ) {
90 $value = $object->$name;
91 } elsif ( $object->$name ) {
92 $value = Data::Recursive::Encode->encode_utf8( $json->decode( $object->$name ) );
93 }
94 }
95
96 </%init>