smalruby-editor 0.3.1-x86-mingw32 → 0.3.2-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of smalruby-editor might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/views/main_menu_view.js.coffee.erb +2 -2
- data/app/assets/javascripts/views/signin_modal_view.js.coffee.erb +8 -2
- data/app/models/preference.rb +59 -46
- data/app/models/user.rb +5 -3
- data/app/views/editor/_signin_modal.html.haml +3 -4
- data/lib/smalruby_editor/version.rb +1 -1
- data/spec/acceptance/standalone/run.feature +24 -15
- data/spec/acceptance/standalone/signin.feature +30 -0
- data/spec/spec_helper.rb +4 -1
- data/spec/steps/when_steps.rb +6 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52bf90174126ee050a68d71bf206c2e35e1d41fa
|
4
|
+
data.tar.gz: e1a8974103b7dce6f5169551ea5e462096782b2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ec2928e060d718c6773e7b288c8c99a5ffb9d298d022f269fc3060074b0099429e343fc656f8441c0d34b6d36bff210224a74c62657c7c3ca1a3788e0c0da26
|
7
|
+
data.tar.gz: ed12abdb50a229c3a26602ed82f42b95562c96dd99ba27eccb39d9d736451f8da01da5e9cc1d5d933299b2e7393d264771e8cf6ca841d911df44a3265a3f40a7
|
@@ -127,7 +127,7 @@ Smalruby.MainMenuView = Backbone.View.extend
|
|
127
127
|
msg = "#{errorInfo.row}#{<%= bm('.common_lines') %>}"
|
128
128
|
if errorInfo.column > 0
|
129
129
|
msg += "#{<%= bm('.common_comma') %>}#{errorInfo.column}#{<%= bm('.common_letters') %>}"
|
130
|
-
window.errorMessage(msg + ": #{errorInfo.message}")
|
130
|
+
window.errorMessage(msg + ": #{_.escape(errorInfo.message)}")
|
131
131
|
$.Deferred().reject().promise()
|
132
132
|
.then ->
|
133
133
|
xmlSourceCode.save2()
|
@@ -142,7 +142,7 @@ Smalruby.MainMenuView = Backbone.View.extend
|
|
142
142
|
msg = "#{errorInfo.row}#{<%= bm('.common_lines') %>}"
|
143
143
|
if errorInfo.column > 0
|
144
144
|
msg += "#{<%= bm('.common_comma') %>}#{errorInfo.column}#{<%= bm('.common_letters') %>}"
|
145
|
-
errorMessage(msg + ": #{errorInfo.message}")
|
145
|
+
errorMessage(msg + ": #{_.escape(errorInfo.message)}")
|
146
146
|
$.Deferred().reject().promise()
|
147
147
|
.then(@unblockUI, @unblockUI)
|
148
148
|
.fail ->
|
@@ -17,8 +17,14 @@ Smalruby.SigninModalView = Backbone.View.extend
|
|
17
17
|
render: ->
|
18
18
|
@$el.find('#signin-modal-username')
|
19
19
|
.val($('#username-label').text())
|
20
|
-
|
21
|
-
|
20
|
+
modalOptions = { backdrop: 'static' }
|
21
|
+
if Smalruby.isEnabled('enabled_must_signin')
|
22
|
+
@$el.find('#signin-modal-cancel-button').hide()
|
23
|
+
modalOptions['keyboard'] = false
|
24
|
+
else
|
25
|
+
@$el.find('#signin-modal-cancel-button').show()
|
26
|
+
modalOptions['keyboard'] = true
|
27
|
+
@$el.modal(modalOptions)
|
22
28
|
@$el.modal('show')
|
23
29
|
|
24
30
|
onOk: (e) ->
|
data/app/models/preference.rb
CHANGED
@@ -3,58 +3,71 @@ require "smalruby_editor"
|
|
3
3
|
class Preference < Settingslogic
|
4
4
|
BOOLEAN_FIELD_REGEXP = /(enabled|disabled)/
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
class << self
|
7
|
+
def toolbox_names
|
8
|
+
%w(
|
9
|
+
default
|
10
|
+
smalrubot_v3
|
11
|
+
smalrubot_s1
|
12
|
+
)
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
def toolbox_preference_names
|
16
|
+
%w(
|
17
|
+
toolbox__default__enabled_hardware_blocks
|
18
|
+
toolbox__default__enabled_smalrubot_v3_blocks
|
19
|
+
toolbox__default__enabled_smalrubot_s1_blocks
|
20
|
+
)
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
def general_preference_names
|
24
|
+
%w(
|
25
|
+
disabled_add_character_from_beginning
|
26
|
+
disabled_new_character
|
27
|
+
enabled_readonly_ruby_mode
|
28
|
+
hardware_port
|
29
|
+
)
|
30
|
+
end
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
def admin_preference_names
|
33
|
+
%w(
|
34
|
+
enabled_must_signin
|
35
|
+
)
|
36
|
+
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
def whole_preference_names
|
39
|
+
["toolbox_name"] + toolbox_preference_names +
|
40
|
+
general_preference_names + admin_preference_names
|
41
|
+
end
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
43
|
+
def user_defaults
|
44
|
+
make_defaults(toolbox_preference_names +
|
45
|
+
general_preference_names)
|
46
|
+
.merge("toolbox_name" => "default")
|
47
|
+
end
|
48
|
+
|
49
|
+
def admin_defaults
|
50
|
+
make_defaults(admin_preference_names)
|
51
|
+
end
|
52
|
+
|
53
|
+
def make_toolbox_name_to_preference_names_hash
|
54
|
+
toolbox_preference_names.group_by { |n|
|
55
|
+
n.slice(/^toolbox__(.+?)__/, 1)
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
53
60
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
61
|
+
def make_defaults(preference_names)
|
62
|
+
preference_names.map { |n|
|
63
|
+
case n
|
64
|
+
when BOOLEAN_FIELD_REGEXP
|
65
|
+
[n, false]
|
66
|
+
else
|
67
|
+
[n, ""]
|
68
|
+
end
|
69
|
+
}.to_h
|
70
|
+
end
|
58
71
|
end
|
59
72
|
|
60
73
|
def initialize(hash_or_file = self.class.source, section = nil)
|
data/app/models/user.rb
CHANGED
@@ -18,9 +18,11 @@ class User < ActiveRecord::Base
|
|
18
18
|
|
19
19
|
# set default preferences from SMALRUBY_HOME/config/config.yml
|
20
20
|
def set_default_preferences
|
21
|
-
self.preferences = Preference.
|
22
|
-
Preference.to_h
|
23
|
-
|
21
|
+
self.preferences = Preference.user_defaults
|
22
|
+
h = Preference.to_h
|
23
|
+
(Preference.whole_preference_names -
|
24
|
+
Preference.admin_preference_names).each do |name|
|
25
|
+
preferences[name] = h[name]
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -12,10 +12,9 @@
|
|
12
12
|
%input#signin-modal-username.input-large{name: "username", type: "text", placeholder: t('.username_placeholder')}
|
13
13
|
|
14
14
|
.modal-footer
|
15
|
-
-
|
16
|
-
%
|
17
|
-
|
18
|
-
= t('common.cancel')
|
15
|
+
%button#signin-modal-cancel-button.cancel-button{class: "btn", :"data-dismiss" => "modal", :"aria-hidden" => "true"}<
|
16
|
+
%i.icon-remove
|
17
|
+
= t('common.cancel')
|
19
18
|
%button#signin-modal-ok-button.ok-button{class: "btn btn-primary"}<
|
20
19
|
%i.icon-circle-blank
|
21
20
|
= t('common.login')
|
@@ -8,23 +8,32 @@
|
|
8
8
|
かつ プログラムの名前に "01.rb" を指定する
|
9
9
|
かつ テキストエディタに "puts Hello, World!'" を入力済みである
|
10
10
|
|
11
|
-
シナリオ: 実行前にプログラムのシンタックスエラーをチェックできる
|
12
|
-
もし "実行ボタン" をクリックする
|
11
|
+
# シナリオ: 実行前にプログラムのシンタックスエラーをチェックできる
|
12
|
+
# もし "実行ボタン" をクリックする
|
13
|
+
# かつ JavaScriptによるリクエストが終わるまで待つ
|
14
|
+
#
|
15
|
+
# ならば "メッセージ" に "エラー" を含むこと
|
16
|
+
# かつ "メッセージ" に "プログラムを実行できませんでした" を含むこと
|
17
|
+
# かつ "メッセージ" に "1行、19文字: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('" を含むこと
|
18
|
+
# かつ "メッセージ" に "1行: unterminated string meets end of file" を含むこと
|
19
|
+
|
20
|
+
シナリオ: プログラム実行時に、実行したプログラムによって発生したエラーメッセージを表示できる
|
21
|
+
もし テキストエディタに "raise '不具合'" を入力済みである
|
22
|
+
かつ "実行ボタン" をクリックする
|
13
23
|
かつ JavaScriptによるリクエストが終わるまで待つ
|
14
24
|
|
15
25
|
ならば "メッセージ" に "エラー" を含むこと
|
16
26
|
かつ "メッセージ" に "プログラムを実行できませんでした" を含むこと
|
17
|
-
かつ "メッセージ" に "1
|
18
|
-
かつ "メッセージ" に "1行: unterminated string meets end of file" を含むこと
|
19
|
-
|
20
|
-
シナリオ: 既存のファイルがある状態でプログラムを実行し、上書き保存をキャンセルする
|
21
|
-
前提 ホームディレクトリに "n = 0" という内容の "01.rb" が存在する
|
22
|
-
かつ 確認ダイアログをキャンセルするようにしておく
|
23
|
-
|
24
|
-
もし "実行ボタン" をクリックする
|
25
|
-
かつ JavaScriptによるリクエストが終わるまで待つ
|
26
|
-
かつ JavaScriptによるリクエストが終わるまで待つ
|
27
|
+
かつ "メッセージ" に "1行: in `<main>': 不具合 (RuntimeError)" を含むこと
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
かつ
|
29
|
+
# シナリオ: 既存のファイルがある状態でプログラムを実行し、上書き保存をキャンセルする
|
30
|
+
# 前提 ホームディレクトリに "n = 0" という内容の "01.rb" が存在する
|
31
|
+
# かつ 確認ダイアログをキャンセルするようにしておく
|
32
|
+
#
|
33
|
+
# もし "実行ボタン" をクリックする
|
34
|
+
# かつ JavaScriptによるリクエストが終わるまで待つ
|
35
|
+
# かつ JavaScriptによるリクエストが終わるまで待つ
|
36
|
+
#
|
37
|
+
# ならば 確認メッセージ "前に01.rbという名前でセーブしているけど本当にセーブしますか?\nセーブすると前に作成したプログラムは消えてしまうよ!" を表示すること
|
38
|
+
# かつ "メッセージ" に "プログラムの実行をキャンセルしました" を含むこと
|
39
|
+
# かつ ホームディレクトリの "01.rb" の内容が "n = 0" であること
|
@@ -94,3 +94,33 @@
|
|
94
94
|
もし "サブメニューボタン" をクリックする
|
95
95
|
|
96
96
|
ならば "サブメニュー" に "ログアウト" を含むこと
|
97
|
+
|
98
|
+
シナリオ: enabled_must_signinが有効な状態で、いったんログインしてからリロードするとログイン状態を維持できるのですが、その状態でログアウトしたときに表示されるログイン画面をESCキーや「やめる」ボタンでキャンセルできないこと
|
99
|
+
前提 次のRubyのスクリプトを実行する:
|
100
|
+
"""
|
101
|
+
Preference["enabled_must_signin"] = true
|
102
|
+
"""
|
103
|
+
|
104
|
+
もし "/" にアクセスする
|
105
|
+
かつ JavaScriptによる処理が終わるまで待つ
|
106
|
+
|
107
|
+
ならば "#signin-modal" が表示されていること
|
108
|
+
かつ "#signin-modal-cancel-button" が表示されていないこと
|
109
|
+
|
110
|
+
ならば "#signin-modal" が表示されていること
|
111
|
+
|
112
|
+
もし "signin-modal-username" に "1102" を指定する
|
113
|
+
かつ "signin-modal-ok-button" をクリックする
|
114
|
+
かつ JavaScriptによる処理が終わるまで待つ
|
115
|
+
|
116
|
+
ならば "#signin-modal" が表示されていないこと
|
117
|
+
|
118
|
+
もし ページをリロードする
|
119
|
+
|
120
|
+
ならば "#main-menu" に "ログイン" を含まないこと
|
121
|
+
かつ "#main-menu" に "1102" を含むこと
|
122
|
+
|
123
|
+
もし ログアウトする
|
124
|
+
|
125
|
+
ならば "#signin-modal" が表示されていること
|
126
|
+
かつ "#signin-modal-cancel-button" が表示されていないこと
|
data/spec/spec_helper.rb
CHANGED
@@ -101,7 +101,10 @@ RSpec.configure do |config|
|
|
101
101
|
config.include FeatureHelper, type: :feature
|
102
102
|
|
103
103
|
config.before(:all) do
|
104
|
-
Preference.
|
104
|
+
Preference.user_defaults.each do |key, value|
|
105
|
+
Preference[key] = value
|
106
|
+
end
|
107
|
+
Preference.admin_defaults.each do |key, value|
|
105
108
|
Preference[key] = value
|
106
109
|
end
|
107
110
|
Preference["disabled_add_character_from_beginning"] = true
|
data/spec/steps/when_steps.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smalruby-editor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- Kouji Takao
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -469,8 +469,8 @@ files:
|
|
469
469
|
- public/422.html
|
470
470
|
- public/500.html
|
471
471
|
- public/apple-touch-icon.png
|
472
|
-
- public/assets/application-
|
473
|
-
- public/assets/application-
|
472
|
+
- public/assets/application-d994c5cb05da6b9c674f86f27d48f991.js
|
473
|
+
- public/assets/application-d994c5cb05da6b9c674f86f27d48f991.js.gz
|
474
474
|
- public/assets/application-f879948b97a781e3d996535a2a0585fa.css
|
475
475
|
- public/assets/application-f879948b97a781e3d996535a2a0585fa.css.gz
|
476
476
|
- public/assets/blockly/msg/js/en_us-d5e1938b2d57c1df954f4411b9165d10.js
|
@@ -493,7 +493,7 @@ files:
|
|
493
493
|
- public/assets/jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png
|
494
494
|
- public/assets/jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png
|
495
495
|
- public/assets/loading-e77296be32d066d3e29d3bf9803fa417.gif
|
496
|
-
- public/assets/manifest-
|
496
|
+
- public/assets/manifest-09b9c583b55684372f2cf9fa635e4e2e.json
|
497
497
|
- public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js
|
498
498
|
- public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js.gz
|
499
499
|
- public/assets/msg/ja-243b0a55ef1086ef2180af94c422cb5e.js
|