1 WCF
.User
.Login
=Class
.extend({_loginSubmitButton
:null,_password
:null,_passwordContainer
:null,_useCookies
:null,_useCookiesContainer
:null,init:function(b
){this._loginSubmitButton
=$("#loginSubmitButton");this._password
=$("#password"),this._passwordContainer
=this._password
.parents("dl");this._useCookies
=$("#useCookies");this._useCookiesContainer
=this._useCookies
.parents("dl");var a
=$("#loginForm");a
.find("input[name=action]").change($.proxy(this._change
,this));if(b
){WCF
.User
.QuickLogin
.init()}},_change:function(a
){if($(a
.currentTarget
).val()==="register"){this._setState(false,WCF
.Language
.get("wcf.user.button.register"))}else{this._setState(true,WCF
.Language
.get("wcf.user.button.login"))}},_setState:function(b
,a
){if(b
){this._password
.enable();this._passwordContainer
.removeClass("disabled");this._useCookies
.enable();this._useCookiesContainer
.removeClass("disabled")}else{this._password
.disable();this._passwordContainer
.addClass("disabled");this._useCookies
.disable();this._useCookiesContainer
.addClass("disabled")}this._loginSubmitButton
.val(a
)}});WCF
.User
.QuickLogin
={_dialog
:null,_loginMessage
:null,init:function(){$(".loginLink").click($.proxy(this._render
,this));$("#loginForm input[name=url]").val(function(a
,b
){return window
.location
.protocol
+"//"+window
.location
.host
+b
})},show:function(a
){if(a
){if(this._loginMessage
===null){this._loginMessage
=$('<p class="info" />').hide().prependTo($("#loginForm > form"))}this._loginMessage
.show().text(a
)}else{if(this._loginMessage
!==null){this._loginMessage
.hide()}}this._render()},_render:function(a
){if(a
!==undefined){a
.preventDefault()}if(this._dialog
===null){this._dialog
=$("#loginForm").wcfDialog({title
:WCF
.Language
.get("wcf.user.login")});this._dialog
.find("#username").focus()}else{this._dialog
.wcfDialog("open")}}};WCF
.User
.Profile
={};WCF
.User
.Profile
.ActivityPointList
={_cache
:{},_dialog
:null,_didInit
:false,_proxy
:null,init:function(){if(this._didInit
){return}this._cache
={};this._dialog
=null;this._proxy
=new WCF
.Action
.Proxy({success
:$.proxy(this._success
,this)});this._init();WCF
.DOMNodeInsertedHandler
.addCallback("WCF.User.Profile.ActivityPointList",$.proxy(this._init
,this));this._didInit
=true},_init:function(){$(".activityPointsDisplay").removeClass("activityPointsDisplay").click($.proxy(this._click
,this))},_click:function(b
){var a
=$(b
.currentTarget
).data("userID");if(this._cache
[a
]===undefined){this._proxy
.setOption("data",{actionName
:"getDetailedActivityPointList",className
:"wcf\\data\\user\\UserProfileAction",objectIDs
:[a
]});this._proxy
.sendRequest()}else{this._show(a
)}},_show:function(a
){if(this._dialog
===null){this._dialog
=$("<div>"+this._cache
[a
]+"</div>").hide().appendTo(document
.body
);this._dialog
.wcfDialog({title
:WCF
.Language
.get("wcf.user.activityPoint")})}else{this._dialog
.html(this._cache
[a
]);this._dialog
.wcfDialog("open")}},_success:function(b
,c
,a
){this._cache
[b
.returnValues
.userID
]=b
.returnValues
.template
;this._show(b
.returnValues
.userID
)}};WCF
.User
.Profile
.Follow
=Class
.extend({_button
:null,_following
:false,_proxy
:null,_userID
:0,init:function(a
,b
){this._following
=b
;this._userID
=a
;this._proxy
=new WCF
.Action
.Proxy({success
:$.proxy(this._success
,this)});this._createButton();this._showButton()},_createButton:function(){this._button
=$('<li id="followUser"><a class="button jsTooltip" title="'+WCF
.Language
.get("wcf.user.button."+(this._following
?"un":"")+"follow")+'"><span class="icon icon16 icon-plus"></span> <span class="invisible">'+WCF
.Language
.get("wcf.user.button."+(this._following
?"un":"")+"follow")+"</span></a></li>").prependTo($("#profileButtonContainer"));this._button
.click($.proxy(this._execute
,this))},_execute:function(){var a
=(this._following
)?"unfollow":"follow";this._proxy
.setOption("data",{actionName
:a
,className
:"wcf\\data\\user\\follow\\UserFollowAction",parameters
:{data
:{userID
:this._userID
}}});this._proxy
.sendRequest()},_showButton:function(){if(this._following
){this._button
.find(".button").data("tooltip",WCF
.Language
.get("wcf.user.button.unfollow")).addClass("active").children(".icon").removeClass("icon-plus").addClass("icon-minus")}else{this._button
.find(".button").data("tooltip",WCF
.Language
.get("wcf.user.button.follow")).removeClass("active").children(".icon").removeClass("icon-minus").addClass("icon-plus")}},_success:function(b
,d
,a
){this._following
=b
.returnValues
.following
;this._showButton();var c
=new WCF
.System
.Notification();c
.show()}});WCF
.User
.Profile
.IgnoreUser
=Class
.extend({_button
:null,_isIgnoredUser
:false,_proxy
:null,_userID
:0,init:function(b
,a
){this._userID
=b
;this._isIgnoredUser
=a
;this._proxy
=new WCF
.Action
.Proxy({success
:$.proxy(this._success
,this)});this._updateButton();this._button
.click($.proxy(this._click
,this))},_click:function(){var a
=(this._isIgnoredUser
)?"unignore":"ignore";this._proxy
.setOption("data",{actionName
:a
,className
:"wcf\\data\\user\\ignore\\UserIgnoreAction",parameters
:{data
:{ignoreUserID
:this._userID
}}});this._proxy
.sendRequest()},_success:function(b
,d
,a
){this._isIgnoredUser
=b
.returnValues
.isIgnoredUser
;this._updateButton();var c
=new WCF
.System
.Notification();c
.show()},_updateButton:function(){if(this._button
===null){this._button
=$('<li id="ignoreUser"><a class="button jsTooltip" title="'+WCF
.Language
.get("wcf.user.button."+(this._isIgnoredUser
?"un":"")+"ignore")+'"><span class="icon icon16 icon-ban-circle"></span> <span class="invisible">'+WCF
.Language
.get("wcf.user.button."+(this._isIgnoredUser
?"un":"")+"ignore")+"</span></a></li>").prependTo($("#profileButtonContainer"))}this._button
.find(".button").data("tooltip",WCF
.Language
.get("wcf.user.button."+(this._isIgnoredUser
?"un":"")+"ignore"));if(this._isIgnoredUser
){this._button
.find(".button").addClass("active").children(".icon").removeClass("icon-ban-circle").addClass("icon-circle-blank")}else{this._button
.find(".button").removeClass("active").children(".icon").removeClass("icon-circle-blank").addClass("icon-ban-circle")}}});WCF
.User
.Profile
.TabMenu
=Class
.extend({_hasContent
:{},_profileContent
:null,_proxy
:null,_userID
:0,init:function(a
){this._profileContent
=$("#profileContent");this._userID
=a
;var c
=this._profileContent
.data("active");var b
=false;this._profileContent
.find("div.tabMenuContent").each($.proxy(function(e
,d
){var f
=$(d
).wcfIdentify();if(c
===f
){this._hasContent
[f
]=true}else{this._hasContent
[f
]=false;b
=true}},this));if(b
){this._proxy
=new WCF
.Action
.Proxy({success
:$.proxy(this._success
,this)});this._profileContent
.bind("wcftabsbeforeactivate",$.proxy(this._loadContent
,this))}},_loadContent:function(b
,c
){var d
=$(c
.newPanel
);var a
=d
.attr("id");if(!this._hasContent
[a
]){this._proxy
.setOption("data",{actionName
:"getContent",className
:"wcf\\data\\user\\profile\\menu\\item\\UserProfileMenuItemAction",parameters
:{data
:{containerID
:a
,menuItem
:d
.data("menuItem"),userID
:this._userID
}}});this._proxy
.sendRequest()}},_success:function(d
,e
,c
){var b
=d
.returnValues
.containerID
;this._hasContent
[b
]=true;var a
=this._profileContent
.find("#"+b
);$("<div>"+d
.returnValues
.template
+"</div>").hide().appendTo(a
);a
.children("div").wcfBlindIn()}});WCF
.User
.Profile
.Editor
=Class
.extend({_actionName
:"",_buttons
:{},_cachedTemplate
:"",_proxy
:null,_tab
:null,_userID
:0,init:function(a
,b
){this._actionName
="";this._cachedTemplate
="";this._tab
=$("#about");this._userID
=a
;this._proxy
=new WCF
.Action
.Proxy({success
:$.proxy(this._success
,this)});this._initButtons();if(b
){this._beginEdit()}},_initButtons:function(){var a
=$("#profileButtonContainer");this._buttons
={beginEdit
:$('<li><a class="button"><span class="icon icon16 icon-pencil" /> <span>'+WCF
.Language
.get("wcf.user.editProfile")+"</span></a></li>").click($.proxy(this._beginEdit
,this)).appendTo(a
)}},_beginEdit:function(){this._actionName
="beginEdit";this._buttons
.beginEdit
.hide();$("#profileContent").wcfTabs("select","about");this._proxy
.setOption("data",{actionName
:"beginEdit",className
:"wcf\\data\\user\\UserProfileAction",objectIDs
:[this._userID
]});this._proxy
.sendRequest()},_save:function(){this._actionName
="save";var b
=/values\[([a-zA-Z0-9._-]+)\]/;var a
={};this._tab
.find("input, textarea, select").each(function(e
,f
){var d
=$(f
);if(d
.getTagName()==="input"){var c
=d
.attr("type");if((c
==="radio"||c
==="checkbox")&&!d
.prop("checked")){return}}var g
=d
.attr("name");if(b
.test(g
)){a
[RegExp
.$1]=d
.val()}});this._proxy
.setOption("data",{actionName
:"save",className
:"wcf\\data\\user\\UserProfileAction",objectIDs
:[this._userID
],parameters
:{values
:a
}});this._proxy
.sendRequest()},_restore:function(){this._actionName
="restore";this._buttons
.beginEdit
.show();this._destroyCKEditor();this._tab
.html(this._cachedTemplate
).children().css({height
:"auto"})},_success:function(b
,c
,a
){switch(this._actionName
){case"beginEdit":this._prepareEdit(b
);break;case"save":if(b
.returnValues
.success
){this._cachedTemplate
=b
.returnValues
.template
;this._restore()}else{this._prepareEdit(b
,true)}break}},_prepareEdit:function(b
,c
){this._destroyCKEditor();var a
=this;this._tab
.html(function(e
,d
){if(c
!==true){a
._cachedTemplate
=d
}return b
.returnValues
.template
});this._tab
.find("input[type=text]").attr("autocomplete","off");this._tab
.find(".formSubmit > button[data-type=save]").click($.proxy(this._save
,this));this._tab
.find(".formSubmit > button[data-type=restore]").click($.proxy(this._restore
,this));this._tab
.find("input").keyup(function(d
){if(d
.which
===13){a
._save();d
.preventDefault();return false}})},_destroyCKEditor:function(){this._tab
.find("textarea + .cke").each(function(c
,b
){var a
=$(b
).attr("id").replace(/cke_/,"");if(CKEDITOR
.instances
[a
]){CKEDITOR
.instances
[a
].destroy()}})}});WCF
.User
.Registration
={};WCF
.User
.Registration
.Validation
=Class
.extend({_actionName
:"",_className
:"",_confirmElement
:null,_element
:null,_errorMessages
:{},_options
:{},_proxy
:null,init:function(b
,c
,a
){this._element
=b
;this._element
.blur($.proxy(this._blur
,this));this._confirmElement
=c
||null;if(this._confirmElement
!==null){this._confirmElement
.blur($.proxy(this._blurConfirm
,this))}a
=a
||{};this._setOptions(a
);this._proxy
=new WCF
.Action
.Proxy({success
:$.proxy(this._success
,this),showLoadingOverlay
:false});this._setErrorMessages()},_setOptions:function(a
){},_setErrorMessages:function(){this._errorMessages
={ajaxError
:"",notEqual
:""}},_blur:function(b
){var a
=this._element
.val();if(!a
){return this._showError(this._element
,WCF
.Language
.get("wcf.global.form.error.empty"))}if(this._confirmElement
!==null){var c
=this._confirmElement
.val();if(c
!=""&&a
!=c
){return this._showError(this._confirmElement
,this._errorMessages
.notEqual
)}}if(!this._validateOptions()){return}this._proxy
.setOption("data",{actionName
:this._actionName
,className
:this._className
,parameters
:this._getParameters()});this._proxy
.sendRequest()},_getParameters:function(){return{}},_validateOptions:function(){return true},_blurConfirm:function(b
){var a
=this._confirmElement
.val();if(!a
){return this._showError(this._confirmElement
,WCF
.Language
.get("wcf.global.form.error.empty"))}this._blur(b
)},_success:function(b
,c
,a
){if(b
.returnValues
.isValid
){this._showSuccess(this._element
);if(this._confirmElement
!==null&&this._confirmElement
.val()){this._showSuccess(this._confirmElement
)}}else{this._showError(this._element
,WCF
.Language
.get(this._errorMessages
.ajaxError
+b
.returnValues
.error
))}},_showError:function(a
,b
){a
.parent().parent().addClass("formError").removeClass("formSuccess");var c
=a
.parent().find("small.innerError");if(!c
.length
){c
=$("<small />").addClass("innerError").insertAfter(a
)}c
.text(b
)},_showSuccess:function(a
){a
.parent().parent().addClass("formSuccess").removeClass("formError");a
.next("small.innerError").remove()}});WCF
.User
.Registration
.Validation
.Username
=WCF
.User
.Registration
.Validation
.extend({_actionName
:"validateUsername",_className
:"wcf\\data\\user\\UserRegistrationAction",_setOptions:function(a
){this._options
=$.extend(true,{minlength
:3,maxlength
:25},a
)},_setErrorMessages:function(){this._errorMessages
={ajaxError
:"wcf.user.username.error."}},_validateOptions:function(){var a
=this._element
.val();if(a
.length
<this._options
.minlength
||a
.length
>this._options
.maxlength
){this._showError(this._element
,WCF
.Language
.get("wcf.user.username.error.notValid"));return false}return true},_getParameters:function(){return{username
:this._element
.val()}}});WCF
.User
.Registration
.Validation
.EmailAddress
=WCF
.User
.Registration
.Validation
.extend({_actionName
:"validateEmailAddress",_className
:"wcf\\data\\user\\UserRegistrationAction",_getParameters:function(){return{email
:this._element
.val()}},_setErrorMessages:function(){this._errorMessages
={ajaxError
:"wcf.user.email.error.",notEqual
:WCF
.Language
.get("wcf.user.confirmEmail.error.notEqual")}}});WCF
.User
.Registration
.Validation
.Password
=WCF
.User
.Registration
.Validation
.extend({_actionName
:"validatePassword",_className
:"wcf\\data\\user\\UserRegistrationAction",_getParameters:function(){return{password
:this._element
.val()}},_setErrorMessages:function(){this._errorMessages
={ajaxError
:"wcf.user.password.error.",notEqual
:WCF
.Language
.get("wcf.user.confirmPassword.error.notEqual")}}});WCF
.User
.Registration
.LostPassword
=Class
.extend({_email
:null,_username
:null,init:function(){this._email
=$("#emailInput");this._username
=$("#usernameInput");this._email
.keyup($.proxy(this._checkEmail
,this));this._username
.keyup($.proxy(this._checkUsername
,this));if($.browser
.mozilla
&&$.browser
.touch
){this._email
.on("input",$.proxy(this._checkEmail
,this));this._username
.on("input",$.proxy(this._checkUsername
,this))}this._checkEmail();this._checkUsername()},_checkEmail:function(){if(this._email
.val()==""){this._username
.enable();this._username
.parents("dl:eq(0)").removeClass("disabled")}else{this._username
.disable();this._username
.parents("dl:eq(0)").addClass("disabled")}},_checkUsername:function(){if(this._username
.val()==""){this._email
.enable();this._email
.parents("dl:eq(0)").removeClass("disabled")}else{this._email
.disable();this._email
.parents("dl:eq(0)").addClass("disabled")}}});WCF
.Notification
={};WCF
.Notification
.UserPanel
=WCF
.UserPanel
.extend({_proxy
:null,_showAllLink
:"",init:function(a
){this._noItems
="wcf.user.notification.noMoreNotifications";this._proxy
=new WCF
.Action
.Proxy({success
:$.proxy(this._success
,this)});this._showAllLink
=a
;this._super("userNotifications");if(this._container
.data("count")){document
.title
="("+this._container
.data("count")+") "+document
.title
}},_addDefaultItems:function(a
){this._addDivider(a
);if(this._container
.data("count")){$('<li><a href="'+this._showAllLink
+'">'+WCF
.Language
.get("wcf.user.notification.showAll")+"</a></li>").appendTo(a
);this._addDivider(a
)}$('<li id="userNotificationsMarkAllAsConfirmed"><a>'+WCF
.Language
.get("wcf.user.notification.markAllAsConfirmed")+"</a></li>").click($.proxy(this._markAllAsConfirmed
,this)).appendTo(a
)},_getParameters:function(){return{actionName
:"getOutstandingNotifications",className
:"wcf\\data\\user\\notification\\UserNotificationAction"}},_after:function(a
){WCF
.Dropdown
.getDropdownMenu(this._container
.wcfIdentify()).children("li.jsNotificationItem").click($.proxy(this._markAsConfirmed
,this))},_markAsConfirmed:function(a
){this._proxy
.setOption("data",{actionName
:"markAsConfirmed",className
:"wcf\\data\\user\\notification\\UserNotificationAction",parameters
:{notificationID
:$(a
.currentTarget
).data("notificationID")}});this._proxy
.sendRequest()},_markAllAsConfirmed:function(){WCF
.System
.Confirmation
.show(WCF
.Language
.get("wcf.user.notification.markAllAsConfirmed.confirmMessage"),$.proxy(function(a
){if(a
==="confirm"){this._proxy
.setOption("data",{actionName
:"markAllAsConfirmed",className
:"wcf\\data\\user\\notification\\UserNotificationAction"});this._proxy
.sendRequest()}},this))},_success:function(b
,c
,a
){switch(b
.actionName
){case"markAllAsConfirmed":$(".jsNotificationItem").remove();document
.title
=document
.title
.replace(/^\(([0-9]+)\) /,"");case"getOutstandingNotifications":if(!b.returnValues||!b.returnValues.template){$("#userNotificationsMarkAllAsConfirmed").prev(".dropdownDivider").remove();$("#userNotificationsMarkAllAsConfirmed").remove()}this._super(b,c,a);break;case"markAsConfirmed":WCF.Dropdown.getDropdownMenu(this._container.wcfIdentify()).children("li.jsNotificationItem").each(function(e,f){var d=$(f);if(b.returnValues.notificationID==d.data("notificationID")){window.location=d.data("link");return false}});break}}});WCF.Notification.List=Class.extend({_badge:null,_items:{},_proxy:null,init:function(){var a=$("li.jsNotificationItem");if(!a.length){return}a.each($.proxy(function(c,b){var d=$(b);this._items[d.data("notificationID")]=d;d.find(".jsMarkAsConfirmed").data("notificationID",d.data("notificationID")).click($.proxy(this._click,this));d.find("p").html(function(f,e){return"<a>"+e+"</a>"}).children("a
").data("notificationID
",d.data("notificationID
")).click($.proxy(this._clickLink,this))},this));this._badge=$(".jsNotificationsBadge
:eq(0)");this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)});$(".contentNavigation
.jsMarkAllAsConfirmed
").click($.proxy(this._markAllAsConfirmed,this))},_clickLink:function(a){this._items[$(a.currentTarget).data("notificationID
")].data("redirect
",true);this._click(a)},_click:function(a){this._proxy.setOption("data
",{actionName:"markAsConfirmed
",className:"wcf
\\data
\\user
\\notification
\\UserNotificationAction
",parameters:{notificationID:$(a.currentTarget).data("notificationID
")}});this._proxy.sendRequest()},_markAllAsConfirmed:function(){WCF.System.Confirmation.show(WCF.Language.get("wcf
.user
.notification
.markAllAsConfirmed
.confirmMessage
"),$.proxy(function(a){if(a==="confirm
"){this._proxy.setOption("data
",{actionName:"markAllAsConfirmed
",className:"wcf
\\data
\\user
\\notification
\\UserNotificationAction
"});this._proxy.sendRequest()}},this))},_success:function(c,d,b){switch(c.actionName){case"markAllAsConfirmed
":window.location.reload();break;case"markAsConfirmed
":var a=this._items[c.returnValues.notificationID];if(a.data("redirect
")){window.location=a.data("link
");return}this._items[c.returnValues.notificationID].remove();delete this._items[c.returnValues.notificationID];this._badge.html(c.returnValues.totalCount);document.title=document.title.replace(/^\(([0-9]+)\) /,"");if(c.returnValues.totalCount>0){document.title="("+c.returnValues.totalCount+") "+document.title}break}}});WCF.User.SignaturePreview=WCF.Message.Preview.extend({_handleResponse:function(b){var a=$("#previewContainer
");if(!a.length){a=$('<fieldset id="previewContainer
"><legend>'+WCF.Language.get("wcf
.global
.preview
")+"</legend><div></div></fieldset>").insertBefore($("#signatureContainer")).wcfFadeIn()}a.children("div").first().html(b.returnValues.message)}});WCF.User.RecentActivityLoader=Class.extend({_container:null,_filteredByFollowedUsers:false,_loadButton:null,_proxy:null,_userID:0,init:function(b,a){this._container=$("#recentActivities");this._filteredByFollowedUsers=(a===true);this._userID=b;if(this._userID!==null&&!this._userID){console.debug("[WCF.User.RecentActivityLoader] Invalid parameter 'userID' given.");return}this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)});this._loadButton=$('<li class="recentActivitiesMore"><button class="small">'+WCF.Language.get("wcf.user.recentActivity.more")+"</button
></li>").appendTo(this._container);this._loadButton=this._loadButton.children("button").click($.proxy(this._click,this))},_click:function(){this._loadButton.enable();var a={lastEventTime:this._container.data("lastEventTime")};if(this._userID){a.userID=this._userID}else{if(this._filteredByFollowedUsers){a.filteredByFollowedUsers=1}}this._proxy.setOption("data",{actionName:"load",className:"wcf\\data\\user\\activity\\event\\UserActivityEventAction",parameters:a});this._proxy.sendRequest()},_success:function(b,c,a){if(b.returnValues.template){$(b.returnValues.template).insertBefore(this._loadButton.parent());this._container.data("lastEventTime",b.returnValues.lastEventTime);this._loadButton.enable()}else{$("<small>"+WCF.Language.get("wcf.user.recentActivity.noMoreEntries")+"</small>").appendTo(this._loadButton.parent());this._loadButton.remove()}}});WCF.User.ProfilePreview=WCF.Popover.extend({_proxy:null,_userProfiles:{},init:function(){this._super(".userLink
");this._proxy=new WCF.Action.Proxy({showLoadingOverlay:false})},_loadContent:function(){var a=$("#"+this._activeElementID);var c=a.data("userID
");if(this._userProfiles[c]){this._insertContent(this._activeElementID,this._userProfiles[c],true)}else{this._proxy.setOption("data
",{actionName:"getUserProfile
",className:"wcf
\\data
\\user
\\UserProfileAction
",objectIDs:[c]});var d=this._activeElementID;var b=this;this._proxy.setOption("success
",function(f,g,e){b._userProfiles[c]=f.returnValues.template;b._insertContent(d,f.returnValues.template,true)});this._proxy.setOption("failure
",function(f,e,h,g){b._userProfiles[c]=f.message;b._insertContent(d,f.message,true);return false});this._proxy.sendRequest()}}});WCF.User.Action={};WCF.User.Action.Follow=Class.extend({_containerList:null,_followButtonSelector:".jsFollowButton
",_userID:0,init:function(b,a){if(!b.length){return}this._containerList=b;if(a){this._followButtonSelector=a}this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)});this._containerList.each($.proxy(function(d,c){$(c).find(this._followButtonSelector).click($.proxy(this._click,this))},this))},_click:function(b){var a=$(b.target);if(!a.is("a
")){a=a.closest("a
")}this._userID=a.data("objectID
");this._proxy.setOption("data
",{actionName:a.data("following
")?"unfollow
":"follow
",className:"wcf
\\data
\\user
\\follow
\\UserFollowAction
",parameters:{data:{userID:this._userID}}});this._proxy.sendRequest()},_success:function(b,d,a){this._containerList.each($.proxy(function(f,e){var g=$(e).find(this._followButtonSelector).get(0);if(g&&$(g).data("objectID
")==this._userID){g=$(g);if(b.returnValues.following){g.data("tooltip
",WCF.Language.get("wcf
.user
.button
.unfollow
")).children(".icon
").removeClass("icon
-plus
").addClass("icon
-minus
")}else{g.data("tooltip
",WCF.Language.get("wcf
.user
.button
.follow
")).children(".icon
").removeClass("icon
-minus
").addClass("icon
-plus
")}g.data("following
",b.returnValues.following);return false}},this));var c=new WCF.System.Notification();c.show()}});WCF.User.Action.Ignore=Class.extend({_containerList:null,_ignoreButtonSelector:".jsIgnoreButton
",_userID:0,init:function(a,b){if(!a.length){return}this._containerList=a;if(b){this._ignoreButtonSelector=b}this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)});this._containerList.each($.proxy(function(d,c){$(c).find(this._ignoreButtonSelector).click($.proxy(this._click,this))},this))},_click:function(b){var a=$(b.target);if(!a.is("a
")){a=a.closest("a
")}this._userID=a.data("objectID
");this._proxy.setOption("data
",{actionName:a.data("ignored
")?"unignore
":"ignore
",className:"wcf
\\data
\\user
\\ignore
\\UserIgnoreAction
",parameters:{data:{ignoreUserID:this._userID}}});this._proxy.sendRequest()},_success:function(b,d,a){this._containerList.each($.proxy(function(f,e){var g=$(e).find(this._ignoreButtonSelector).get(0);if(g&&$(g).data("objectID
")==this._userID){g=$(g);if(b.returnValues.isIgnoredUser){g.data("tooltip
",WCF.Language.get("wcf
.user
.button
.unignore
")).children(".icon
").removeClass("icon
-ban
-circle
").addClass("icon
-circle
-blank
")}else{g.data("tooltip
",WCF.Language.get("wcf
.user
.button
.ignore
")).children(".icon
").removeClass("icon
-circle
-blank
").addClass("icon
-ban
-circle
")}g.data("ignored
",b.returnValues.isIgnoredUser);return false}},this));var c=new WCF.System.Notification();c.show()}});WCF.User.Avatar={};WCF.User.Avatar.Crop=Class.extend({_cropX:0,_cropY:0,_dialog:null,_proxy:null,MAX_THUMBNAIL_SIZE:128,init:function(a){this._avatarID=a;if(this._dialog){this.destroy()}this._dialog=null;if(!this._proxy){this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)})}$(".userAvatarCrop
").click($.proxy(this._showCropDialog,this))},destroy:function(){this._dialog.remove()},_crop:function(a){this._proxy.setOption("data
",{actionName:"cropAvatar
",className:"wcf
\\data
\\user
\\avatar
\\UserAvatarAction
",objectIDs:[this._avatarID],parameters:{cropX:this._cropX,cropY:this._cropY}});this._proxy.sendRequest()},_getCropDialog:function(b){if(!this._dialog){this._dialog=$("<div
/>").hide().appendTo(document.body);this._dialog.wcfDialog({title:WCF.Language.get("wcf.user.avatar.type.custom.crop")})}this._dialog.html(b.returnValues.template);this._dialog.find('button[data-type="save"]').click($.proxy(this._crop,this));this._cropX=b.returnValues.cropX;this._cropY=b.returnValues.cropY;var a=$("#userAvatarCropSelection > img");$("#userAvatarCropSelection").css({height:a.height()+"px",width:a.width()+"px"});$("#userAvatarCropOverlaySelection").css({"background-image":"url("+a.attr("src")+")","background-position":-this._cropX+"px "+-this._cropY+"px",left:this._cropX+"px",top:this._cropY+"px"}).draggable({containment:"parent",drag:$.proxy(this._updateSelection,this),stop:$.proxy(this._updateSelection,this)});this._dialog.find('button[data-type="save"]').click($.proxy(this._save,this));this._dialog.wcfDialog("render")},_showCropDialog:function(){if(!this._dialog){this._proxy.setOption("data",{actionName:"getCropDialog",className:"wcf\\data\\user\\avatar\\UserAvatarAction",objectIDs:[this._avatarID]});this._proxy.sendRequest()}else{this._dialog.wcfDialog("open")}},_success:function(b,d,a){switch(b.actionName){case"getCropDialog":this._getCropDialog(b);break;case"cropAvatar":$("#avatarUpload > dt > img").replaceWith($('<img src="'+b.returnValues.url+'" alt="" class="userAvatarCrop jsTooltip" title="'+WCF.Language.get("wcf.user.avatar.type.custom.crop")+'" />').css({width:"96px",height:"96px"}).click($.proxy(this._showCropDialog,this)));WCF.DOMNodeInsertedHandler.execute();this._dialog.wcfDialog("close");var c=new WCF.System.Notification();c.show();break}},_updateSelection:function(a,b){this._cropX=b.position.left;this._cropY=b.position.top;$("#userAvatarCropOverlaySelection").css({"background-position":-b.position.left+"px "+-b.position.top+"px"})}});WCF.User.Avatar.Upload=WCF.Upload.extend({_avatarCrop:null,_userID:0,init:function(b,a){this._super($("#avatarUpload > dd > div"),undefined,"wcf\\data\\user\\avatar\\UserAvatarAction");this._userID=b||0;this._avatarCrop=a;$("#avatarForm input[type=radio]").change(function(){if($(this).val()=="custom"){$("#avatarUpload > dd > div").show()}else{$("#avatarUpload > dd > div").hide()}});if(!$("#avatarForm input[type=radio][value=custom]:checked").length){$("#avatarUpload > dd > div").hide()}},_initFile:function(a){return $("#avatarUpload > dt > img")},_success:function(c,a){if(a.returnValues.url){this._updateImage(a.returnValues.url,a.returnValues.canCrop);if(a.returnValues.canCrop){if(!this._avatarCrop){this._avatarCrop=new WCF.User.Avatar.Crop(a.returnValues.avatarID)}else{this._avatarCrop.init(a.returnValues.avatarID)}}else{if(this._avatarCrop){this._avatarCrop.destroy();this._avatarCrop=null}}$("#avatarUpload > dd > .innerError").remove();var b=new WCF.System.Notification(WCF.Language.get("wcf.user.avatar.upload.success"));b.show()}else{if(a.returnValues.errorType){this._getInnerErrorElement().text(WCF.Language.get("wcf.user.avatar.upload.error."+a.returnValues.errorType))}}},_updateImage:function(b,a){$("#avatarUpload > dt > img").remove();var c=$('<img src
="'+b+'" alt
="" />').css({height:"auto","max-height":"96px","max-width":"96px",width:"auto"});if(a){c.addClass("userAvatarCrop").addClass("jsTooltip");c.attr("title",WCF.Language.get("wcf.user.avatar.type.custom.crop"))}$("#avatarUpload > dt").prepend(c);WCF.DOMNodeInsertedHandler.execute()},_getInnerErrorElement:function(){var a=$("#avatarUpload > dd > .innerError");if(!a.length){a=$('<small class="innerError"></span>');$("#avatarUpload > dd").append(a)}return a},_getParameters:function(){return{userID:this._userID}},});WCF.User.List=Class.extend({_additionalParameters:{},_cache:{},_className:"",_dialog:null,_dialogTitle:"",_pageCount:0,_pageNo:1,_proxy:null,init:function(c,a,b){this._additionalParameters=b||{};this._cache={};this._className=c;this._dialog=null;this._dialogTitle=a;this._pageCount=0;this._pageNo=1;this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)})},open:function(){this._pageNo=1;this._showPage()},_showPage:function(b,c){if(c&&c.activePage){this._pageNo=c.activePage}if(this._pageCount!=0&&(this._pageNo<1||this._pageNo>this._pageCount)){console.debug("[WCF.User.List] Cannot access page "+this._pageNo+" of "+this._pageCount);return}if(this._cache[this._pageNo]){var a=false;if(this._dialog===null){this._dialog=$('<div id
="userList'+this._className.hashCode()+'" />').hide().appendTo(document.body);a=true}this._dialog.empty();this._dialog.html(this._cache[this._pageNo]);if(this._pageCount>1){this._dialog.find(".jsPagination").wcfPages({activePage:this._pageNo,maxPage:this._pageCount}).bind("wcfpagesswitched",$.proxy(this._showPage,this))}if(a){this._dialog.wcfDialog({title:this._dialogTitle})}else{this._dialog.wcfDialog("open").wcfDialog("render")}}else{this._additionalParameters.pageNo=this._pageNo;this._proxy.setOption("data",{actionName:"getGroupedUserList",className:this._className,interfaceName:"wcf\\data\\IGroupedUserListAction",parameters:this._additionalParameters});this._proxy.sendRequest()}},_success:function(b,c,a){if(b.returnValues.pageCount){this._pageCount=b.returnValues.pageCount}this._cache[this._pageNo]=b.returnValues.template;this._showPage()}});WCF.User.ObjectWatch={};WCF.User.ObjectWatch.Subscribe=Class.extend({_buttonSelector:".jsSubscribeButton",_buttons:{},_dialog:null,_notification:null,init:function(){this._buttons={};this._notification=null;this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)});$(this._buttonSelector).each($.proxy(function(a,b){var d=$(b);var c=d.data("objectID");this._buttons[c]=d.click($.proxy(this._click,this))},this))},_click:function(a){var b=$(a.currentTarget);this._proxy.setOption("data",{actionName:"manageSubscription",className:"wcf\\data\\user\\object\\watch\\UserObjectWatchAction",parameters:{objectID:b.data("objectID"),objectType:b.data("objectType")}});this._proxy.sendRequest()},_success:function(c,e,b){if(c.actionName==="manageSubscription"){if(this._dialog===null){this._dialog=$("<div>"+c.returnValues.template+"</div>").hide().appendTo(document.body);this._dialog.wcfDialog({title:WCF.Language.get("wcf
.user
.objectWatch
.manageSubscription
")})}else{this._dialog.html(c.returnValues.template);this._dialog.wcfDialog("open
")}this._dialog.find(".formSubmit
> .jsButtonSave
").data("objectID
",c.returnValues.objectID).click($.proxy(this._save,this));var a=this._dialog.find("input
[name
=enableNotification
]").disable();this._dialog.find("input
[name
=subscribe
]").change(function(f){var g=$(f.currentTarget);if(g.val()==1){a.enable()}else{a.disable()}});var d=this._dialog.find("input
[name
=subscribe
]:checked
");if(d.length&&d.val()==1){a.enable()}}else{if(c.actionName==="saveSubscription
"&&this._dialog.is(":visible
")){this._dialog.wcfDialog("close
");if(this._notification===null){this._notification=new WCF.System.Notification(WCF.Language.get("wcf
.global
.success
.edit
"))}this._notification.show()}}},_save:function(b){var d=this._buttons[$(b.currentTarget).data("objectID
")];var c=this._dialog.find("input
[name
=subscribe
]:checked
").val();var a=(this._dialog.find("input
[name
=enableNotification
]").is(":checked
"))?1:0;this._proxy.setOption("data
",{actionName:"saveSubscription
",className:"wcf
\\data
\\user
\\object
\\watch
\\UserObjectWatchAction
",parameters:{enableNotification:a,objectID:d.data("objectID
"),objectType:d.data("objectType
"),subscribe:c}});this._proxy.sendRequest()}});