View | Details | Raw Unified | Return to bug 14100
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt (-1 / +1 lines)
Lines 126-132 Item types administration Link Here
126
  [% END %]
126
  [% END %]
127
      <li>
127
      <li>
128
          <label for="description" class="required">Description: </label><input type="text" id="description" name="description" size="48" value="[% description |html %]" required="required" /> <span class="required">Required</span>
128
          <label for="description" class="required">Description: </label><input type="text" id="description" name="description" size="48" value="[% description |html %]" required="required" /> <span class="required">Required</span>
129
          <a href="/cgi-bin/koha/admin/localization.pl?entity=itemtypes&code=[% itemtype %]" title="Translate" rel="gb_page_center[600,500]"><i class="icon-edit"></i> Translate for other languages</a>
129
          <a href="/cgi-bin/koha/admin/localization.pl?entity=itemtypes&code=[% itemtype %]" title="Translate item type [% itemtype %]" rel="gb_page_center[600,500]"><i class="icon-edit"></i> Translate into other languages</a>
130
      </li>
130
      </li>
131
     [% IF ( noItemTypeImages ) %]
131
     [% IF ( noItemTypeImages ) %]
132
	 <li><span class="label">Image: </span>Item type images are disabled. To enable them, turn off the <a href="/cgi-bin/koha/admin/preferences.pl?op=search&amp;searchfield=noItemTypeImages">noItemTypeImages system preference</a></li></ol>
132
	 <li><span class="label">Image: </span>Item type images are disabled. To enable them, turn off the <a href="/cgi-bin/koha/admin/preferences.pl?op=search&amp;searchfield=noItemTypeImages">noItemTypeImages system preference</a></li></ol>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/localization.tt (-13 / +41 lines)
Lines 17-23 Link Here
17
            message.text("Entity %s (code %s) for lang %s has correctly been updated with '%s'".format(data.entity, data.code, data.lang, data.translation));
17
            message.text("Entity %s (code %s) for lang %s has correctly been updated with '%s'".format(data.entity, data.code, data.lang, data.translation));
18
        } else if ( type == 'error_on_update' ) {
18
        } else if ( type == 'error_on_update' ) {
19
            message = $('<div class="dialog alert"></div>');
19
            message = $('<div class="dialog alert"></div>');
20
            message.text("An error occurred when updating this translation");
20
            if ( data.error_code == 'already_exists' ) {
21
                message.text("This translation already exists for this language.");
22
            } else if ( data.error_code == 'no_change' ) {
23
                message.text("No change made for this translation.");
24
            } else {
25
                message.text("An error occurred when updating this translation.");
26
            }
21
        } else if ( type == 'success_on_delete' ) {
27
        } else if ( type == 'success_on_delete' ) {
22
            message = $('<div class="dialog message"></div>');
28
            message = $('<div class="dialog message"></div>');
23
            message.text("The translation (id %s) has been removed successfully".format(data.id));
29
            message.text("The translation (id %s) has been removed successfully".format(data.id));
Lines 29-35 Link Here
29
            message.text("Translation (id %s) has been added successfully".format(data.id));
35
            message.text("Translation (id %s) has been added successfully".format(data.id));
30
        } else if ( type == 'error_on_insert' ) {
36
        } else if ( type == 'error_on_insert' ) {
31
            message = $('<div class="dialog alert"></div>');
37
            message = $('<div class="dialog alert"></div>');
32
            message.text("An error occurred when adding this translation");
38
            message = $('<div class="dialog alert"></div>');
39
            if ( data.error_code == 'already_exists' ) {
40
                message.text("This translation already exists for this language.");
41
            } else {
42
                message.text("An error occurred when adding this translation");
43
            }
33
        }
44
        }
34
45
35
        $(messages).append(message);
46
        $(messages).append(message);
Lines 45-58 Link Here
45
            type: 'PUT',
56
            type: 'PUT',
46
            url: '/cgi-bin/koha/svc/localization',
57
            url: '/cgi-bin/koha/svc/localization',
47
            success: function (data) {
58
            success: function (data) {
48
                if ( data.is_changed ) {
59
                if ( data.error ) {
49
                    $(cell).css('background-color', '#00FF00');
60
                    $(cell).css('background-color', '#FF0000');
50
                    show_message({ type: 'success_on_update', data: data });
61
                    if ( $(cell).hasClass('lang') ) {
51
                }
62
                        $(cell).text(data.lang)
52
                if ( $(cell).hasClass('lang') ) {
63
                    } else if ( $(cell).hasClass('translation') ) {
53
                    $(cell).text(data.lang)
64
                        $(cell).text(data.translation)
54
                } else if ( $(cell).hasClass('translation') ) {
65
                    }
55
                    $(cell).text(data.translation)
66
                    show_message({ type: 'error_on_update', data: data });
67
                } else {
68
                    if ( data.is_changed ) {
69
                        $(cell).css('background-color', '#00FF00');
70
                        show_message({ type: 'success_on_update', data: data });
71
                    } else {
72
                        $(cell).css('background-color', '#FF6400');
73
                        show_message({ type: 'error_on_update', data: { error_code: 'no_change' } });
74
                    }
75
                    if ( $(cell).hasClass('lang') ) {
76
                        $(cell).text(data.lang)
77
                    } else if ( $(cell).hasClass('translation') ) {
78
                        $(cell).text(data.translation)
79
                    }
56
                }
80
                }
57
            },
81
            },
58
            error: function (data) {
82
            error: function (data) {
Lines 149-157 Link Here
149
                type: 'POST',
173
                type: 'POST',
150
                url: '/cgi-bin/koha/svc/localization',
174
                url: '/cgi-bin/koha/svc/localization',
151
                success: function (data) {
175
                success: function (data) {
152
                    // FIXME Should append the delete link
176
                    if ( data.error ) {
153
                    table.row.add( [ data.id, data.entity, data.code, data.lang, data.translation, "" ] ).draw();
177
                        show_message({ type: 'error_on_insert', data: data });
154
                    show_message({ type: 'success_on_insert', data: data });
178
                    } else {
179
                        // FIXME Should append the delete link
180
                        table.row.add( [ data.id, data.entity, data.code, data.lang, data.translation, "" ] ).draw();
181
                        show_message({ type: 'success_on_insert', data: data });
182
                    }
155
                },
183
                },
156
                error: function (data) {
184
                error: function (data) {
157
                    show_message({ type: 'error_on_insert', data: data });
185
                    show_message({ type: 'error_on_insert', data: data });
(-)a/svc/localization (-25 / +35 lines)
Lines 1-6 Link Here
1
#!/usr/bin/perl
1
#!/usr/bin/perl
2
2
3
use Modern::Perl;
3
use Modern::Perl;
4
use Encode qw( encode );
4
5
5
use C4::Service;
6
use C4::Service;
6
use Koha::Localizations;
7
use Koha::Localizations;
Lines 16-22 sub get_translations { Link Here
16
            type => $s->type,
17
            type => $s->type,
17
            code => $s->code,
18
            code => $s->code,
18
            lang => $s->lang,
19
            lang => $s->lang,
19
            translation => $s->translation,
20
            translation => Encode::encode('utf-8', $s->translation),
20
        }
21
        }
21
    }
22
    }
22
    $response->param( translations => \@translations );
23
    $response->param( translations => \@translations );
Lines 27-52 sub update_translation { Link Here
27
    my $id = $query->param('id');
28
    my $id = $query->param('id');
28
    my $translation = $query->param('translation');
29
    my $translation = $query->param('translation');
29
    my $lang = $query->param('lang');
30
    my $lang = $query->param('lang');
30
    my $localization = Koha::Localizations->find( $id );
31
31
32
    my $localization = Koha::Localizations->find( $id );
32
    if ( defined $lang and $localization->lang ne $lang ) {
33
    if ( defined $lang and $localization->lang ne $lang ) {
33
        $localization->lang( $lang )
34
        $localization->lang( $lang )
34
    }
35
    }
35
    if ( defined $translation and $localization->translation ne $translation ) {
36
    if ( defined $translation and $localization->translation ne $translation ) {
36
        $localization->translation( $translation )
37
        $localization->translation( $translation )
37
    }
38
    }
38
    my $is_changed;
39
    my %params;
39
    if ( $localization->is_changed ) {
40
    if ( $localization->is_changed ) {
40
        $is_changed = 1;
41
        unless ( Koha::Localizations->search( { entity => $localization->entity, code => $localization->code, lang => $lang, translation => $translation, id => { '!=' => $localization->id }, } )->count ) {
41
        $localization->store;
42
            $params{is_changed} = 1;
43
            $localization->store;
44
        } else {
45
            $params{error} = 1;
46
            $params{error_code} = 'already_exists';
47
        }
42
    }
48
    }
43
    $response->param(
49
    $response->param(
50
        %params,
44
        id          => $localization->localization_id,
51
        id          => $localization->localization_id,
45
        entity      => $localization->entity,
52
        entity      => $localization->entity,
46
        code        => $localization->code,
53
        code        => $localization->code,
47
        lang        => $localization->lang,
54
        lang        => $localization->lang,
48
        translation => $localization->translation,
55
        translation => Encode::encode('utf-8', $localization->translation),
49
        is_changed  => $is_changed,
50
    );
56
    );
51
    C4::Service->return_success( $response );
57
    C4::Service->return_success( $response );
52
}
58
}
Lines 56-79 sub add_translation { Link Here
56
    my $code = $query->param('code');
62
    my $code = $query->param('code');
57
    my $lang = $query->param('lang');
63
    my $lang = $query->param('lang');
58
    my $translation = $query->param('translation');
64
    my $translation = $query->param('translation');
59
    my $localization = Koha::Localization->new(
60
        {
61
            entity => $entity,
62
            code => $code,
63
            lang => $lang,
64
            translation => $translation,
65
        }
66
    );
67
    $localization->store;
68
    $localization->localization_id;
69
    $response->param(
70
        id          => $localization->localization_id,
71
        entity      => $localization->entity,
72
        code        => $localization->code,
73
        lang        => $localization->lang,
74
        translation => $localization->translation,
75
    );
76
65
66
    unless ( Koha::Localizations->search({entity => $entity, code => $code, lang => $lang, translation => $translation, })->count ) {
67
        my $localization = Koha::Localization->new(
68
            {
69
                entity => $entity,
70
                code => $code,
71
                lang => $lang,
72
                translation => $translation,
73
            }
74
        );
75
        $localization->store;
76
        $localization->localization_id;
77
        $response->param(
78
            id          => $localization->localization_id,
79
            entity      => $localization->entity,
80
            code        => $localization->code,
81
            lang        => $localization->lang,
82
            translation => Encode::encode('utf-8', $localization->translation),
83
        );
84
85
    } else {
86
        $response->param( error => 1, error_code => 'already_exists', );
87
    }
77
    C4::Service->return_success( $response );
88
    C4::Service->return_success( $response );
78
}
89
}
79
90
80
- 

Return to bug 14100