25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/omniauth/strategies/mailru_api/view_helper.rb', line 25
def mailru_login_button(control = nil, use_jquery_form = true)
unless control.present?
control = "<a class='mrc__connectButton'></a>"
init_control = "mailru.connect.initButton();"
end
"<div id=\"mailru_api_transport\" style=\"display:inline;\"></div>\n<script type=\"text/javascript\">\n mailruLogin = {\n initialized: false,\n initMailRuApi: function() {\n mailru.connect.init('\#{OmniAuth.config.mailru_app_id}', '\#{OmniAuth.config.mailru_private_key}');\n \#{init_control}\n mailru.events.listen(mailru.connect.events.login, function(session){\n mailru.common.users.getInfo(function(result){\n mailruLogin.redirectWithPost('\#{OmniAuth.config.path_prefix}/mailru/callback', result[0]);\n });\n });\n mailruLogin.initialized = true;\n },\n onLoad: function() {\n mailru.loader.require('api', function() {\n mailruLogin.initMailRuApi();\n });\n },\n login: function(){\n if(!mailruLogin.initialized) mailruLogin.initMailRuApi();\n mailru.connect.login();\n },\n redirectWithPost: function(url, data) {\n data = data || {};\n \#{ respond_to?(:request_forgery_protection_token) && respond_to?(:form_authenticity_token) ?\n \"data['\#{request_forgery_protection_token}'] = '\#{form_authenticity_token}'; var method = 'POST';\" :\n \"var method = 'GET';\" }\n var form = document.createElement(\"form\"),\ninput;\n form.setAttribute(\"action\", url);\n form.setAttribute(\"method\", method);\n \n for (var property in data) {\n if (data.hasOwnProperty(property)) {\nvar value = data[property];\nif(property == 'location') {\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", 'county');\n input.setAttribute(\"value\", value['country']['name']);\n form.appendChild(input);\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", 'city');\n input.setAttribute(\"value\", value['city']['name']);\n form.appendChild(input);\n}\nelse if (value instanceof Array) {\n for (var i = 0, l = value.length; i < l; i++) {\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", property);\n input.setAttribute(\"value\", value[i]);\n form.appendChild(input);\n }\n}\nelse {\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", property);\n input.setAttribute(\"value\", value);\n form.appendChild(input);\n}\n }\n }\n document.body.appendChild(form);\n \#{ use_jquery_form ? \"$(form).ajaxSubmit({ dataType: 'script' });\" : \"form.submit();\" }\n document.body.removeChild(form);\n }\n };\n (function() {\n var el = document.createElement(\"script\");\n el.type = \"text/javascript\";\n el.charset = \"windows-1251\";\n el.src = \"http://cdn.connect.mail.ru/js/loader.js\";\n el.async = true;\n el.onreadystatechange= function () {\n if (this.readyState == 'complete') mailruLogin.onLoad();\n }\n el.onload= mailruLogin.onLoad;\n document.getElementById(\"mailru_api_transport\").appendChild(el);\n }());\n</script>\n\#{control}\n"
end
|