1 /// <reference path="lib/jquery-1.7.js" />
\r
2 /// <reference path="gettmpl.js" />
\r
3 /// <reference path="ajaxCall.js" />
\r
7 /// create a collect button
\r
8 /// require pictureTemplate.html
\r
9 $.collectButtion = function (holderSelector, loggedIn, albums, displayTarget, successCallback) {
\r
10 return new Collect(holderSelector, loggedIn, albums, displayTarget, successCallback);
\r
13 Collect = function (holderSelector, loggedIn, albums, displayTarget, successCallback) {
\r
14 this.holder = $(holderSelector);
\r
15 this.albums = albums;
\r
16 this.pictureId = this.holder.attr('data-picture-id');
\r
17 this.ajaxErrorHandler = handleFault;
\r
18 this.updateHandler = this.doCollect;
\r
19 this.successCallback = successCallback;
\r
20 this.displayTarget = displayTarget;
\r
24 this.holder.on('click', function (e) {
\r
26 collect.showDialog(collect, $(e.target))
\r
30 this.albums = getMyAlbumNamesSync(false, this.ajaxErrorHandler);
\r
34 this.holder.attr('title', '登陆才能进行操作哦,点击就可以登陆啦! ');
\r
35 this.holder.on('click', function () {
\r
44 getDialog: function () {
\r
45 return $.data(document, 'collectDialog');
\r
47 showDialog: function (collect, buttonTarget) {
\r
48 var dialog = this.getDialog();
\r
50 dialog.showDialog();
\r
53 at: 'center bottom',
\r
54 of: $(collect.holder)
\r
58 var dialogTemplate = $('#collectDialogTemplate').tmpl({ albums: collect.albums });
\r
59 dialog = dialogTemplate.mDialog({ width: 452, height: 252, modal: false });
\r
63 at: 'center bottom',
\r
64 of: $(collect.holder)
\r
67 $.data(document, 'collectDialog', dialog);
\r
70 var albumId = buttonTarget.attr('data-album-id');
\r
71 dialog.find('a').removeClass('ColorAacd60');
\r
72 dialog.find('a[data-album-id=' + albumId + ']').addClass('ColorAacd60');
\r
74 $('#btnCreateAlbum', dialog).off('click').on('click', function () {
\r
75 var name = $.trim($('#newAlbumName', dialog).val());
\r
79 var result = createAlbumSync(new AlbumToCreate(name, '', ''), function (errorCode) {
\r
80 handleSensitiveWord(errorCode, '抱歉,专辑名包含非法字符,请修改后再创建。');
\r
83 renderTemplate('.favDailCon ul', '#albumItemTemplate', result, true);
\r
84 $('#newAlbumName', dialog).val('');
\r
85 $("a.albumName", dialog).on('click', function (event) {
\r
86 collect.updateHandler(collect, collect.pictureId, $(this).attr('data-album-id'));
\r
87 collect.getDialog().closeDialog();
\r
93 $("a.albumName", dialog).off('click').on('click', function (event) {
\r
94 collect.updateHandler(collect, collect.pictureId, $(this).attr('data-album-id'));
\r
95 collect.getDialog().closeDialog();
\r
100 doCollect: function (collect, pictureId, albumId) {
\r
101 var li = $('li.pic[data-picture-id=' + pictureId + ']');
\r
104 isMine = li.attr('data-mine');
\r
106 isMine = "0"; // 图片页,出现按钮必定不是自己的图片
\r
109 if (isMine == "1") {
\r
110 ajaxMovePicture(true, pictureId, albumId, function (result) { collect.collectCallback(collect, pictureId, li, result); }
\r
111 , collect.ajaxErrorHandler);
\r
114 ajaxCollectPicture(true, pictureId, albumId, function (result) { collect.collectCallback(collect, pictureId, li, result); }
\r
115 , collect.ajaxErrorHandler);
\r
119 collectCallback: function (collect, pictureId, li, result) {
\r
120 var btn = $('input.collectButton[data-picture-id=' + pictureId + ']');
\r
121 if (btn.val() == '收纳') { // 新收纳,更新数字
\r
122 var displayTarget = li.find('span.collectCount');
\r
123 if (displayTarget && displayTarget.length > 0) {
\r
124 var txt = $.trim(li.attr('data-collect-count'));
\r
126 var v = parseInt(txt);
\r
127 displayTarget.text('(' + (v + 1) + ')');
\r
131 if (collect.successCallback) {
\r
132 collect.successCallback(result);
\r
136 btn.attr('data-album-id', result.id);
\r