2024-08-31 01:03:37 +08:00

132 lines
4.9 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

kodReady.push(function(){
var staticPath = "{{pluginHost}}static/";
var version = '?v={{package.version}}';
LNG.set(jsonDecode(urlDecode("{{LNG}}")));
var thirdItems = {
"qq": "QQ",
"weixin": LNG['common.wechat'],
"github": "GitHub",
"google": "Google",
"facebook": "Facebook"
};
// 获取第三方登录项
var getLoginWith = function(){
if (!_.isUndefined(G.system.options.loginWith)) {
return G.system.options.loginWith;
}
return _.join((_.get(G, 'system.options.loginConfig.loginWith') || []), ',');
}
// 1.后台设置
Events.bind("admin.setting.initViewBefore",function(formData, options, self){
var loginWith = getLoginWith();
// 无法插入到指定属性openRegist之前只能在定义处加初始值
formData.loginWith = {
"type": "checkbox",
"value": loginWith,
"display": LNG['admin.setting.thirdLogin'],
"desc": LNG['admin.setting.thirdLoginDesc'],
"info": thirdItems
};
formData.sep401 = '<hr>';
});
// 2.插件设置
Events.bind("plugin.config.formBefore", function(formData, options, self){
if (_.get(options, 'id') != 'app-config-{{pluginName}}') return;
var list = [];
var loginWith = getLoginWith();
var logins = loginWith ? _.split(loginWith, ',') : [];
_.each(thirdItems, function(title, type){
var opt = "";
var web = "";
if (_.includes(['google', 'facebook'], type)) {
if (type == 'google') {
opt = "<hr><span class='fq-desc mb-10'>"+LNG['oauth.config.fqDesc']+"</span>";
}
web = "<span class='web-url'>https://"+type+".com</span>";
}
var icon = type == 'weixin' ? 'wechat' : type;
var checked = _.includes(logins, type) ? 'checked="checked"' : '';
opt += "<p class='mb-5'><i class='font-icon ri-"+icon+"-fill with-color'></i><span>"+title+web+"</span>\
<input type='checkbox' name='type' value='"+type+"' class='kui-checkbox' "+checked+">\
</p>";
list.push(opt);
});
formData.list.value = "<div class='type-list'>"+(_.join(list,''))+"</div>";
formData.loginWith.value = loginWith;
});
Events.bind("plugin.config.formAfter", function(_this){
var form = _this['form{{pluginName}}'];
if (!form || !form.$el) return;
// 可能保存失败,暂不做处理
form.bind('onSave', function(result){
var loginWith = [];
form.$("input[name=type]").each(function(){
if ($(this).is(":checked")) {
loginWith.push($(this).val());
}
});
result.loginWith = _.join(loginWith, ',');
G.system.options.loginConfig.loginWith = loginWith;
G.system.options.loginWith = result.loginWith;
});
});
// 3.个人中心设置
Events.bind('user.account.initViewAfter', function(self){
var loginWith = getLoginWith();
if (!loginWith) return;
requireAsync([
staticPath+'oauth/user.js' + version,
staticPath+'oauth/bind.js' + version,
],function(User, Bind){
new User({parent:self, load: {thirdItems: thirdItems, loginWith: loginWith}, Bind: Bind});
});
});
// 4.登录页
// Events.bind("router.after.user/login",function(){
Events.bind("user.login.initViewAfter",function(self){
var loginWith = getLoginWith();
if (!loginWith) return;
requireAsync([
staticPath+'oauth/login.js' + version,
staticPath+'oauth/bind.js' + version,
],function(Login, Bind){
new Login({parent:self, load: {thirdItems: thirdItems, loginWith: loginWith, pluginApi: "{{pluginApi}}"}, Bind: Bind});
});
});
if($.hasKey('plugin.{{package.id}}.event')) return;
// 5.日志列表解析
ClassBase.extendHook({
hookMatch:'dataParseHtmlItem,dataParseOthers,dataParseUsers',
dataParseUsers:function(){
var type = arguments[0];
var desc = arguments[1];
if (_.startsWith(type, 'user.bind')) {
var title = thirdItems[desc.type] || '';
return [LNG['common.type'] + ':' + title];
}
return this.__dataParseUsers.apply(this,arguments);
},
normalActionGet: function(){
var item = arguments[0];
if (_.startsWith(item.type, 'user.bind')) {
var actions = {
'user.bind.bind': ['user', 'user'],
'user.bind.unbind': ['user', 'user-unbind']
};
return actions[item.type] || ['', ''];
}
return this.__normalActionGet.apply(this,arguments);
}
});
if($.hasKey('plugin.{{package.id}}.style')) return;
requireAsync("{{pluginHost}}static/main.css");
});