ava_rails_generator 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +54 -0
- data/USAGE +27 -0
- data/VERSION +1 -0
- data/ava_rails_generator.rb +201 -0
- data/templates/001_create_sessions.rb +16 -0
- data/templates/002_create_users.rb +20 -0
- data/templates/action_view_helper.rb +35 -0
- data/templates/action_view_ja.yml +115 -0
- data/templates/active_record_ja.yml +66 -0
- data/templates/active_support_ja.yml +36 -0
- data/templates/ann_back.png +0 -0
- data/templates/ann_back02.png +0 -0
- data/templates/application.html.erb +35 -0
- data/templates/application.js +128 -0
- data/templates/application_controller.rb +90 -0
- data/templates/application_csv.rb +66 -0
- data/templates/application_helper.rb +558 -0
- data/templates/application_search.rb +74 -0
- data/templates/arrow_h.gif +0 -0
- data/templates/arrow_l.png +0 -0
- data/templates/arrow_n.gif +0 -0
- data/templates/arrow_r.png +0 -0
- data/templates/arrow_v.gif +0 -0
- data/templates/auth_controller.rb +80 -0
- data/templates/bak.png +0 -0
- data/templates/btn_back.png +0 -0
- data/templates/btn_cancel_cre.png +0 -0
- data/templates/btn_cancel_upd.png +0 -0
- data/templates/btn_clear.png +0 -0
- data/templates/btn_close.png +0 -0
- data/templates/btn_complete.png +0 -0
- data/templates/btn_confirm_cre.png +0 -0
- data/templates/btn_confirm_upd.png +0 -0
- data/templates/btn_create.png +0 -0
- data/templates/btn_csv.png +0 -0
- data/templates/btn_delete.png +0 -0
- data/templates/btn_login.png +0 -0
- data/templates/btn_new.png +0 -0
- data/templates/btn_reenter.png +0 -0
- data/templates/btn_reload.png +0 -0
- data/templates/btn_reply.png +0 -0
- data/templates/btn_search.png +0 -0
- data/templates/btn_send.png +0 -0
- data/templates/btn_sub01.png +0 -0
- data/templates/btn_sub02.png +0 -0
- data/templates/btn_upd.png +0 -0
- data/templates/btn_upd_cancel.png +0 -0
- data/templates/btn_update.png +0 -0
- data/templates/btn_xml.png +0 -0
- data/templates/bubble_ex_g.png +0 -0
- data/templates/bubble_ex_p.png +0 -0
- data/templates/bubble_minus.gif +0 -0
- data/templates/bubble_plus.gif +0 -0
- data/templates/builder.js +136 -0
- data/templates/calendar.gif +0 -0
- data/templates/csv.rb +997 -0
- data/templates/default.css +92 -0
- data/templates/footer_a_bak.gif +0 -0
- data/templates/footer_m_bak.gif +0 -0
- data/templates/footer_w_bak.gif +0 -0
- data/templates/form.css +105 -0
- data/templates/g_navi_bak.gif +0 -0
- data/templates/import.css +13 -0
- data/templates/index.html.erb +8 -0
- data/templates/jquery-1.4.4.min.js +167 -0
- data/templates/jquery-ui-1.8.10.custom.css +573 -0
- data/templates/jquery-ui-1.8.10.custom.min.js +782 -0
- data/templates/jquery.ui.datepicker-ja.js +23 -0
- data/templates/layout.css +938 -0
- data/templates/link.gif +0 -0
- data/templates/link_t.gif +0 -0
- data/templates/login.html.erb +64 -0
- data/templates/login_back01.png +0 -0
- data/templates/logo.png +0 -0
- data/templates/mail.png +0 -0
- data/templates/menuTabL.gif +0 -0
- data/templates/menuTabR.gif +0 -0
- data/templates/navis.gif +0 -0
- data/templates/pageTitle_bak.png +0 -0
- data/templates/page_bak.gif +0 -0
- data/templates/password.html.erb +69 -0
- data/templates/pop.png +0 -0
- data/templates/prototype.js +6081 -0
- data/templates/rails.png +0 -0
- data/templates/scaffold.css +110 -0
- data/templates/scriptaculous.js +68 -0
- data/templates/slider.js +275 -0
- data/templates/sound.js +59 -0
- data/templates/tip.png +0 -0
- data/templates/tolist.png +0 -0
- data/templates/top_controller.rb +5 -0
- data/templates/translation_ja.yml +30 -0
- data/templates/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/templates/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/templates/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/templates/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/templates/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/templates/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/templates/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/templates/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/templates/ui-icons_217bc0_256x240.png +0 -0
- data/templates/ui-icons_2e83ff_256x240.png +0 -0
- data/templates/ui-icons_469bdd_256x240.png +0 -0
- data/templates/ui-icons_6da8d5_256x240.png +0 -0
- data/templates/ui-icons_cd0a0a_256x240.png +0 -0
- data/templates/ui-icons_d8e7f3_256x240.png +0 -0
- data/templates/ui-icons_f9bd01_256x240.png +0 -0
- data/templates/unittest.js +568 -0
- data/templates/user.rb +71 -0
- data/templates/user_blue.css +62 -0
- data/templates/user_green.css +61 -0
- data/templates/user_red.css +61 -0
- metadata +254 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
ja:
|
2
|
+
activerecord:
|
3
|
+
errors:
|
4
|
+
# The values :model, :attribute and :value are always available for interpolation
|
5
|
+
# The value :count is available when applicable. Can be used for pluralization.
|
6
|
+
messages:
|
7
|
+
inclusion: "は一覧にありません。"
|
8
|
+
exclusion: "は予約されています。"
|
9
|
+
invalid: "は不正な値です。"
|
10
|
+
confirmation: "が一致しません。"
|
11
|
+
accepted: "を受諾してください。"
|
12
|
+
empty: "を入力してください。"
|
13
|
+
blank: "を入力してください。"
|
14
|
+
too_long: "は{{count}}文字以内で入力してください。"
|
15
|
+
too_short: "は{{count}}文字以上で入力してください。"
|
16
|
+
wrong_length: "は{{count}}文字で入力してください。"
|
17
|
+
taken: "はすでに存在します。"
|
18
|
+
not_a_number: "は数値で入力してください。"
|
19
|
+
greater_than: "は{{count}}より大きい値にしてください。"
|
20
|
+
greater_than_or_equal_to: "は{{count}}以上の値にしてください。"
|
21
|
+
equal_to: "は{{count}}にしてください。"
|
22
|
+
less_than: "は{{count}}より小さい値にしてください。"
|
23
|
+
less_than_or_equal_to: "は{{count}}以下の値にしてください。"
|
24
|
+
odd: "は奇数にしてください。"
|
25
|
+
even: "は偶数にしてください。"
|
26
|
+
not_a_zenkaku: "は全角で入力してください。"
|
27
|
+
not_a_hankaku: "は半角で入力してください。"
|
28
|
+
not_a_email: "はメールアドレス書式(aaa@bbb.ne.jp)で入力してください。"
|
29
|
+
not_a_date: "は日付書式(YYYY/MM/DD)で入力してください。"
|
30
|
+
not_a_tel: "は電話番号書式(0000-00-0000)で入力してください。"
|
31
|
+
not_a_zip: "は数字7桁で入力してください。"
|
32
|
+
not_a_password: "は8桁以上、半角英数字の組み合わせで、英字と数字をそれぞれ1つ以上含めてください。"
|
33
|
+
file_too_large: "ファイルサイズが大きすぎます。"
|
34
|
+
|
35
|
+
record_invalid: "バリデーションに失敗しました。{{errors}}"
|
36
|
+
# Append your own errors here or at the model/attributes scope.
|
37
|
+
|
38
|
+
full_messages:
|
39
|
+
format: "{{attribute}} {{message}}"
|
40
|
+
|
41
|
+
# You can define own errors for models or model attributes.
|
42
|
+
# The values :model, :attribute and :value are always available for interpolation.
|
43
|
+
#
|
44
|
+
# For example,
|
45
|
+
# models:
|
46
|
+
# user:
|
47
|
+
# blank: "This is a custom blank message for {{model}}: {{attribute}}"
|
48
|
+
# attributes:
|
49
|
+
# login:
|
50
|
+
# blank: "This is a custom blank message for User login"
|
51
|
+
# Will define custom blank validation message for User model and
|
52
|
+
# custom blank validation message for login attribute of User model.
|
53
|
+
#models:
|
54
|
+
|
55
|
+
# Translate model names. Used in Model.human_name().
|
56
|
+
#models:
|
57
|
+
# For example,
|
58
|
+
# user: "Dude"
|
59
|
+
# will translate User model name to "Dude"
|
60
|
+
|
61
|
+
# Translate model attribute names. Used in Model.human_attribute_name(attribute).
|
62
|
+
#attributes:
|
63
|
+
# For example,
|
64
|
+
# user:
|
65
|
+
# login: "Handle"
|
66
|
+
# will translate User attribute "login" as "Handle"
|
@@ -0,0 +1,36 @@
|
|
1
|
+
ja:
|
2
|
+
date:
|
3
|
+
formats:
|
4
|
+
# Use the strftime parameters for formats.
|
5
|
+
# When no format has been given, it uses default.
|
6
|
+
# You can provide other formats here if you like!
|
7
|
+
default: "%Y/%m/%d"
|
8
|
+
short: "%m/%d"
|
9
|
+
long: "%Y年%m月%d日(%a)"
|
10
|
+
|
11
|
+
day_names: [日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日]
|
12
|
+
abbr_day_names: [日, 月, 火, 水, 木, 金, 土]
|
13
|
+
|
14
|
+
# Don't forget the nil at the beginning; there's no such thing as a 0th month
|
15
|
+
month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
|
16
|
+
abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
|
17
|
+
# Used in date_select and datime_select.
|
18
|
+
order: [ :year, :month, :day ]
|
19
|
+
|
20
|
+
time:
|
21
|
+
formats:
|
22
|
+
default: "%Y/%m/%d %H:%M:%S"
|
23
|
+
short: "%y/%m/%d %H:%M"
|
24
|
+
long: "%Y年%m月%d日(%a) %H時%M分%S秒 %Z"
|
25
|
+
am: "午前"
|
26
|
+
pm: "午後"
|
27
|
+
|
28
|
+
# Used in array.to_sentence.
|
29
|
+
support:
|
30
|
+
array:
|
31
|
+
sentence_connector: "と"
|
32
|
+
skip_last_comma: true
|
33
|
+
words_connector: "と"
|
34
|
+
two_words_connector: "と"
|
35
|
+
last_word_connector: "と"
|
36
|
+
|
Binary file
|
Binary file
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
|
7
|
+
<title><%%=h APP_TITLE %></title>
|
8
|
+
<%%= stylesheet_link_tag 'import' , :media => :all %>
|
9
|
+
<%%= stylesheet_link_tag 'user_<%= app_color %>', :media => :all unless @display_type == DISPLAY_TYPE_SIMPLE %>
|
10
|
+
<%%= stylesheet_link_tag 'scaffold' %>
|
11
|
+
<%%= stylesheet_link_tag 'jquery-ui-1.8.10.custom' %>
|
12
|
+
<%%= javascript_include_tag 'prototype' %>
|
13
|
+
<%%= javascript_include_tag 'jquery-1.4.4.min' %>
|
14
|
+
<%%= javascript_include_tag 'jquery-ui-1.8.10.custom.min' %>
|
15
|
+
<%%= javascript_include_tag 'jquery.ui.datepicker-ja' %>
|
16
|
+
<%%= javascript_include_tag 'scriptaculous' %>
|
17
|
+
<%%= javascript_include_tag 'application' %>
|
18
|
+
<%% unless @content_for_head.blank? -%>
|
19
|
+
<script type="text/javascript">
|
20
|
+
<!--
|
21
|
+
<%%= yield :head %>
|
22
|
+
//-->
|
23
|
+
</script>
|
24
|
+
<%% end %>
|
25
|
+
</head>
|
26
|
+
<body>
|
27
|
+
<div id="wrapper<%%= "Pop" if @display_type == DISPLAY_TYPE_SIMPLE %>">
|
28
|
+
<%%= header unless @display_type == DISPLAY_TYPE_SIMPLE %>
|
29
|
+
|
30
|
+
<%%= yield %>
|
31
|
+
|
32
|
+
<%%= footer unless @display_type == DISPLAY_TYPE_SIMPLE %>
|
33
|
+
<!--/ #wrapper--></div>
|
34
|
+
</body>
|
35
|
+
</html>
|
@@ -0,0 +1,128 @@
|
|
1
|
+
// Place your application-specific JavaScript functions and classes here
|
2
|
+
// This file is automatically included by javascript_include_tag :defaults
|
3
|
+
|
4
|
+
function submit(url, formname, method){
|
5
|
+
var form = document.forms[0];
|
6
|
+
if (formname != null) {
|
7
|
+
form = document.forms[formname];
|
8
|
+
}
|
9
|
+
if (method == null || method == '') {
|
10
|
+
method = 'POST'
|
11
|
+
}
|
12
|
+
form.action = url;
|
13
|
+
form.method = method;
|
14
|
+
form.submit();
|
15
|
+
}
|
16
|
+
|
17
|
+
function sort(col, order){
|
18
|
+
var formname = 'form_search';
|
19
|
+
var form = document.forms[formname];
|
20
|
+
document.getElementById('sort' ).value=col;
|
21
|
+
document.getElementById('order').value=order;
|
22
|
+
submit('', formname, 'GET');
|
23
|
+
}
|
24
|
+
|
25
|
+
function pop(url, h, winName){
|
26
|
+
if(h == undefined || h == null){
|
27
|
+
h = 300;
|
28
|
+
}
|
29
|
+
var win = window.open( url, winName, 'width=700, height=' + h + ', menubar=no, toolbar=no, scrollbars=yes, resizable=yes' );
|
30
|
+
win.focus();
|
31
|
+
|
32
|
+
}
|
33
|
+
|
34
|
+
function windowClose(){
|
35
|
+
window.close();
|
36
|
+
}
|
37
|
+
|
38
|
+
function pageTop(targetID){
|
39
|
+
if(targetID == undefined || targetID == null){
|
40
|
+
targetID = 'header';
|
41
|
+
}
|
42
|
+
new Effect.ScrollTo(targetID, {fps:60, duration: 0.5});
|
43
|
+
}
|
44
|
+
|
45
|
+
function insertComma(str) {
|
46
|
+
var num = new String( str ).replace( /,/g, "" );
|
47
|
+
while ( num != ( num = num.replace( /^(-?\d+)(\d{3})/, "$1,$2" ) ) );
|
48
|
+
return num;
|
49
|
+
}
|
50
|
+
|
51
|
+
function deleteComma(str){
|
52
|
+
var num = new String( str ).replace( /,/g, "" ); return num;
|
53
|
+
}
|
54
|
+
|
55
|
+
function checkNum(val){
|
56
|
+
flg = false;
|
57
|
+
|
58
|
+
if(!isNull(val)){
|
59
|
+
if(isNum(val)){
|
60
|
+
flg = true;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
return flg;
|
64
|
+
}
|
65
|
+
|
66
|
+
function isNum(elm){
|
67
|
+
flg = true;
|
68
|
+
var reg = new RegExp(/[^0-9]/);
|
69
|
+
if(elm.match(reg)){
|
70
|
+
flg = false;
|
71
|
+
}
|
72
|
+
return flg;
|
73
|
+
}
|
74
|
+
|
75
|
+
function isNull(val){
|
76
|
+
if(val == null || val == ''){
|
77
|
+
return true;
|
78
|
+
}
|
79
|
+
return false;
|
80
|
+
}
|
81
|
+
|
82
|
+
/*** jQuery / prototype.js ***/
|
83
|
+
|
84
|
+
/* prototype.js/jQueryコンフリクト抑制 */
|
85
|
+
var $q = jQuery.noConflict(true);
|
86
|
+
|
87
|
+
function datePick() {
|
88
|
+
$q('input:text[class="ymd"]').datepicker({
|
89
|
+
showOn: 'both',
|
90
|
+
buttonImage: '/images/calendar.gif',
|
91
|
+
buttonImageOnly: true
|
92
|
+
});
|
93
|
+
}
|
94
|
+
|
95
|
+
function colorRow() {
|
96
|
+
$q('.commonList tbody tr:nth-child(even)').addClass('even');
|
97
|
+
}
|
98
|
+
|
99
|
+
$q(function() {
|
100
|
+
datePick();
|
101
|
+
colorRow();
|
102
|
+
});
|
103
|
+
|
104
|
+
function showMsg(box, btn){
|
105
|
+
var item = $(box);
|
106
|
+
Effect.toggle(item, 'appear', {duration: 0.17});
|
107
|
+
|
108
|
+
if ($(btn).hasClassName("msgMinus")) {
|
109
|
+
$(btn).removeClassName("msgMinus");
|
110
|
+
$(btn).addClassName("msgPlus");
|
111
|
+
return 1
|
112
|
+
}
|
113
|
+
else {
|
114
|
+
$(btn).removeClassName("msgPlus");
|
115
|
+
$(btn).addClassName("msgMinus");
|
116
|
+
return 0
|
117
|
+
}
|
118
|
+
}
|
119
|
+
|
120
|
+
function ref(url){
|
121
|
+
location.href = url;
|
122
|
+
}
|
123
|
+
|
124
|
+
function showCalClearBtn(obj) {
|
125
|
+
var calObj = $(obj).previous('input.ymd');
|
126
|
+
$(calObj).clear();
|
127
|
+
}
|
128
|
+
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# Filters added to this controller apply to all controllers in the application.
|
2
|
+
# Likewise, all the methods added will be available for all controllers.
|
3
|
+
|
4
|
+
class ApplicationController < ActionController::Base
|
5
|
+
require 'action_view_helper'
|
6
|
+
require 'application_csv'
|
7
|
+
|
8
|
+
before_filter :authorize
|
9
|
+
|
10
|
+
helper :all # include all helpers, all the time
|
11
|
+
protect_from_forgery # See ActionController::RequestForgeryProtection for details
|
12
|
+
|
13
|
+
# Scrub sensitive parameters from your log
|
14
|
+
# filter_parameter_logging :password
|
15
|
+
|
16
|
+
# rescue_from Exception, :with => :error
|
17
|
+
|
18
|
+
protected
|
19
|
+
def error(e)
|
20
|
+
logger.error(e.message);
|
21
|
+
flash[:error] = t(:error_default, :message => e)
|
22
|
+
begin
|
23
|
+
if action_name == :index.to_s
|
24
|
+
reset_session
|
25
|
+
redirect_to(login_url)
|
26
|
+
return
|
27
|
+
end
|
28
|
+
redirect_to(:action => :index)
|
29
|
+
rescue
|
30
|
+
redirect_to(top_url)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def authorize
|
35
|
+
begin
|
36
|
+
session_check
|
37
|
+
@user = User.find(session_get_user)
|
38
|
+
raise unless @user
|
39
|
+
@app_search = ApplicationSearch.new(params) if action_name == :index.to_s
|
40
|
+
rescue => e
|
41
|
+
logger.debug(e.message)
|
42
|
+
flash[:notice] = t(:error_authorize)
|
43
|
+
redirect_to(root_url)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def session_reset
|
48
|
+
session[:user_id] = nil
|
49
|
+
session[:ids] = nil
|
50
|
+
session[:prm] = nil
|
51
|
+
session[:msg_opn] = nil
|
52
|
+
reset_session
|
53
|
+
end
|
54
|
+
|
55
|
+
def session_check
|
56
|
+
raise unless session[:user_id]
|
57
|
+
end
|
58
|
+
|
59
|
+
def session_get_user
|
60
|
+
return session[:user_id]
|
61
|
+
end
|
62
|
+
|
63
|
+
def session_get_ids
|
64
|
+
return session[:ids]
|
65
|
+
end
|
66
|
+
|
67
|
+
def session_get_prm
|
68
|
+
return session[:prm]
|
69
|
+
end
|
70
|
+
|
71
|
+
def session_get_msg_opn
|
72
|
+
return session[:msg_opn]
|
73
|
+
end
|
74
|
+
|
75
|
+
def session_set_user(user)
|
76
|
+
session[:user_id] = user.id
|
77
|
+
end
|
78
|
+
|
79
|
+
def session_set_ids(objs)
|
80
|
+
# return unless params[:format].to_s == :html.to_s
|
81
|
+
ids = Array.new(objs.size)
|
82
|
+
session[:ids] = ids
|
83
|
+
session[:prm] = params
|
84
|
+
end
|
85
|
+
|
86
|
+
def session_set_msg_opn(msg_opn)
|
87
|
+
session[:msg_opn] = msg_opn
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module ActiveSupport
|
2
|
+
module CoreExtensions
|
3
|
+
module Array
|
4
|
+
module Conversions
|
5
|
+
|
6
|
+
def to_csv(instance, options = {})
|
7
|
+
require 'csv'
|
8
|
+
require 'kconv'
|
9
|
+
|
10
|
+
o_keys = []
|
11
|
+
o_names = []
|
12
|
+
o_types = []
|
13
|
+
instance.columns.each{|column|
|
14
|
+
o_keys << column.name
|
15
|
+
name = I18n.t(column.name, :scope => [:activerecord, :attributes, instance.table_name.singularize]) #ApplicationController.helpers.hlabel(:order, column.name)
|
16
|
+
name = I18n.t(column.name, :scope => [:activerecord, :attributes, :commons]) if name.index("translation missing") && name.index("translation missing").to_i >= 0
|
17
|
+
name = column.name if name.index("translation missing") && name.index("translation missing").to_i >= 0
|
18
|
+
o_names << name
|
19
|
+
o_types << column.type
|
20
|
+
}
|
21
|
+
|
22
|
+
CSV::Writer.generate(output = ""){|csv|
|
23
|
+
each_with_index{|all, i|
|
24
|
+
if i == 0
|
25
|
+
names = o_names unless o_names.blank?
|
26
|
+
names = o_keys if names.blank? and !o_keys.blank?
|
27
|
+
names = all.attribute_names if names.blank?
|
28
|
+
# csv << names
|
29
|
+
a0 = []
|
30
|
+
names.each_with_index{|name, j|
|
31
|
+
begin
|
32
|
+
s = Kconv.tosjis(name)
|
33
|
+
rescue
|
34
|
+
end
|
35
|
+
a0 << '"' + s + '"'
|
36
|
+
}
|
37
|
+
csv << a0
|
38
|
+
end
|
39
|
+
|
40
|
+
keys = o_keys unless o_keys.blank?
|
41
|
+
keys = all.attribute_names if keys.blank?
|
42
|
+
|
43
|
+
a1 = []
|
44
|
+
keys.each_with_index{|key,j|
|
45
|
+
begin
|
46
|
+
s = all.read_attribute(key)
|
47
|
+
s = s.gsub(/\r\n|\r|\n/, " ")
|
48
|
+
s = Kconv.tosjis(s)
|
49
|
+
s = '"' + s + '"' unless o_types[j] == ":integer" || s.index(",") > 0
|
50
|
+
rescue
|
51
|
+
end
|
52
|
+
a1 << s
|
53
|
+
}
|
54
|
+
csv << a1
|
55
|
+
}
|
56
|
+
}
|
57
|
+
output
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
|
@@ -0,0 +1,558 @@
|
|
1
|
+
# Methods added to this helper will be available to all templates in the application.
|
2
|
+
module ApplicationHelper
|
3
|
+
# 改行⇒<br>
|
4
|
+
def hbr(str)
|
5
|
+
return if str.blank?
|
6
|
+
str = html_escape(str)
|
7
|
+
str = hbr_without_escape(str)
|
8
|
+
end
|
9
|
+
|
10
|
+
# 改行⇒<br>
|
11
|
+
def hbr_without_escape(str)
|
12
|
+
return if str.blank?
|
13
|
+
str.gsub(/\r\n|\r|\n/, "<br />\n")
|
14
|
+
end
|
15
|
+
|
16
|
+
# 名称表示
|
17
|
+
def hname(obj)
|
18
|
+
unless obj.blank?
|
19
|
+
begin
|
20
|
+
obj.name_with_id
|
21
|
+
rescue
|
22
|
+
obj.name
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# 日時表示
|
28
|
+
def hdate(obj, options = {})
|
29
|
+
format = :default
|
30
|
+
format = options[:format] unless options[:format].blank?
|
31
|
+
I18n.l obj, :format => format unless obj.blank?
|
32
|
+
end
|
33
|
+
|
34
|
+
# 金額表示
|
35
|
+
def hmoney(obj, options = {})
|
36
|
+
number_to_currency obj unless obj.blank?
|
37
|
+
end
|
38
|
+
|
39
|
+
# ラベル表示
|
40
|
+
def hlabel(obj, method)
|
41
|
+
I18n.t(method, :scope => [:activerecord, :attributes, obj])
|
42
|
+
end
|
43
|
+
|
44
|
+
# ラジオ表示
|
45
|
+
def hradio_openflag(obj, method, value, datas)
|
46
|
+
str = ""
|
47
|
+
datas.each {|o|
|
48
|
+
str += "<label>" + obj.radio_button(method, o.id, {:checked => (o.id == value)}) + o.name_with_id + "</label> "
|
49
|
+
}
|
50
|
+
str
|
51
|
+
end
|
52
|
+
|
53
|
+
# 年コンボ表示
|
54
|
+
def hselect_year(method)
|
55
|
+
thisyear = Date.today()
|
56
|
+
fromyear = thisyear << 60
|
57
|
+
toyear = thisyear >> 60
|
58
|
+
|
59
|
+
y = Hash.new()
|
60
|
+
(fromyear.year..toyear.year).each do |i|
|
61
|
+
y[i] = i;
|
62
|
+
end
|
63
|
+
year = y.sort
|
64
|
+
|
65
|
+
value = params[:selectyear]
|
66
|
+
str = select_tag(:selectyear, "<option value=''></option>" + options_from_collection_for_select(year, :first, :last , value.to_i), :onchange => "javascript:submit('#{method}', this.form, 'GET')")
|
67
|
+
str += " 年 "
|
68
|
+
str
|
69
|
+
end
|
70
|
+
|
71
|
+
# 月コンボ表示
|
72
|
+
def hselect_month(method)
|
73
|
+
m = Hash.new()
|
74
|
+
(1..12).each do |i|
|
75
|
+
m[i] = i
|
76
|
+
end
|
77
|
+
month = m.sort
|
78
|
+
|
79
|
+
value = params[:selectmonth]
|
80
|
+
p value
|
81
|
+
str = select_tag(:selectmonth, "<option value=''></option>" + options_from_collection_for_select(month, :first, :last , value.to_i), :onchange => "javascript:submit('#{method}', this.form, 'GET')")
|
82
|
+
str += " 月 "
|
83
|
+
str
|
84
|
+
end
|
85
|
+
|
86
|
+
# 時間コンボ表示
|
87
|
+
def hselect_hour(obj, method, value)
|
88
|
+
h = Hash.new()
|
89
|
+
(0..23).each do |i|
|
90
|
+
h[i] = i
|
91
|
+
end
|
92
|
+
hour = h.sort
|
93
|
+
|
94
|
+
str = obj.select method, hour, {:include_blank => true}
|
95
|
+
str += " 時"
|
96
|
+
str
|
97
|
+
end
|
98
|
+
|
99
|
+
# Ajax
|
100
|
+
def remote(controller, action, options = {})
|
101
|
+
position = options[:position] unless options[:position].blank?
|
102
|
+
with = options[:with] unless options[:with].blank?
|
103
|
+
with = "''" if with.blank?
|
104
|
+
js = <<"EOS"
|
105
|
+
var with_param = '';
|
106
|
+
if(obj != null){
|
107
|
+
with_param += 'id=' + obj.options[obj.selectedIndex].value;
|
108
|
+
}
|
109
|
+
with_param += #{with};
|
110
|
+
EOS
|
111
|
+
js + remote_function(:url => {:controller => controller, :action => action }, :with => "with_param", :update => (controller.to_s + "_" + action.to_s), :position => position)
|
112
|
+
end
|
113
|
+
|
114
|
+
# 必須
|
115
|
+
def required(options = {})
|
116
|
+
" <font color=\"red\">*</font> "
|
117
|
+
end
|
118
|
+
|
119
|
+
# 凡例
|
120
|
+
def note(text, options = {})
|
121
|
+
" [ #{text} ] "
|
122
|
+
end
|
123
|
+
|
124
|
+
# ヘッダ
|
125
|
+
def header(options = {})
|
126
|
+
login_account = @user.account
|
127
|
+
login_name = @user.name
|
128
|
+
company = APP_COMPANY
|
129
|
+
link_password = '<li>' + link_to("パスワード変更", "javascript:void(0);", :onclick => "javascript:pop('" + url_for(:controller => :auth, :action => :password) + "', '600', 'passwordsetting');") + '</li>'
|
130
|
+
link_logout = '<li>' + link_to('ログアウト', :controller => :auth, :action => :logout ) + '</li>'
|
131
|
+
|
132
|
+
str =<<"EOS"
|
133
|
+
<div id="header">
|
134
|
+
<a href="/">
|
135
|
+
<h1 title="#{APP_TITLE}">TMS</h1></a>
|
136
|
+
<div id="hBox">
|
137
|
+
<h2 id="hCompany">#{company}</h2>
|
138
|
+
<ul id="hNavi">
|
139
|
+
#{link_password}
|
140
|
+
#{link_logout}
|
141
|
+
</ul>
|
142
|
+
<ul id="hUser">
|
143
|
+
<li>#{login_account} : #{login_name} さん</li>
|
144
|
+
</ul>
|
145
|
+
<!--/ #hBox--></div>
|
146
|
+
<!--/ #header--></div>
|
147
|
+
EOS
|
148
|
+
return str
|
149
|
+
end
|
150
|
+
|
151
|
+
# フッタ
|
152
|
+
def footer(options = {})
|
153
|
+
link_pagetop = link_to 'このページのトップへ', "javascript:pageTop()"
|
154
|
+
|
155
|
+
str =<<"EOS"
|
156
|
+
<div id ="footer">
|
157
|
+
<div class="pageTop">#{ link_pagetop }</div>
|
158
|
+
<!--/ #footer--></div>
|
159
|
+
EOS
|
160
|
+
return str
|
161
|
+
end
|
162
|
+
|
163
|
+
# ページタイトル
|
164
|
+
def pagetitle(options = {})
|
165
|
+
title = options[:title] #TODO
|
166
|
+
|
167
|
+
str =<<"EOS"
|
168
|
+
<div class="pageTitle">
|
169
|
+
<h2>#{title}</h2>
|
170
|
+
</div>
|
171
|
+
EOS
|
172
|
+
return str
|
173
|
+
end
|
174
|
+
|
175
|
+
# ページサブタイトル
|
176
|
+
def pagesubtitle(options = {})
|
177
|
+
title = options[:title] #TODO
|
178
|
+
|
179
|
+
return "<h3>#{title}</h3>"
|
180
|
+
end
|
181
|
+
|
182
|
+
# メッセージ
|
183
|
+
def message(options = {})
|
184
|
+
|
185
|
+
js = remote_function(:url => {:controller => :auth, :action => :open_close }, :with => "'flag=' + flag" , :update => "msgBtn")
|
186
|
+
jsstr =<<"EOS"
|
187
|
+
function openclose(){
|
188
|
+
var flag = showMsg('msgBox','msgBtn');
|
189
|
+
#{js}
|
190
|
+
}
|
191
|
+
EOS
|
192
|
+
|
193
|
+
content_for :head do
|
194
|
+
jsstr
|
195
|
+
end
|
196
|
+
|
197
|
+
msg = "" if msg.blank?
|
198
|
+
|
199
|
+
(dsp = "block"; cls = "msgMinus")
|
200
|
+
(dsp = "none"; cls = "msgPlus") if session[:msg_opn] == "1"
|
201
|
+
|
202
|
+
str =<<"EOS"
|
203
|
+
<div id="msgBox" style="display:#{dsp};">
|
204
|
+
<div id="messageArea">
|
205
|
+
<div id="messageLeft">
|
206
|
+
<div style="width: 100%;">
|
207
|
+
<div class="corner">
|
208
|
+
<div class="corner1"></div>
|
209
|
+
<div class="corner2"></div>
|
210
|
+
<div class="corner3"></div>
|
211
|
+
<div class="corner4"></div>
|
212
|
+
</div>
|
213
|
+
<div class="corner5_2">
|
214
|
+
<p>
|
215
|
+
#{msg}
|
216
|
+
</p>
|
217
|
+
</div>
|
218
|
+
<div class="corner">
|
219
|
+
<div class="corner4"></div>
|
220
|
+
<div class="corner3"></div>
|
221
|
+
<div class="corner2"></div>
|
222
|
+
<div class="corner1"></div>
|
223
|
+
</div>
|
224
|
+
</div>
|
225
|
+
</div>
|
226
|
+
EOS
|
227
|
+
|
228
|
+
msglist = "" #TODO
|
229
|
+
unless msglist.blank?
|
230
|
+
str +=<<"EOS"
|
231
|
+
<div id="messageRight">
|
232
|
+
<div style="width: 100%;">
|
233
|
+
<div class="corner">
|
234
|
+
<div class="corner1"></div>
|
235
|
+
<div class="corner2"></div>
|
236
|
+
<div class="corner3"></div>
|
237
|
+
<div class="corner4"></div>
|
238
|
+
</div>
|
239
|
+
<div class="corner5">
|
240
|
+
<ol>
|
241
|
+
#{msglist}
|
242
|
+
</ol>
|
243
|
+
</div>
|
244
|
+
<div class="corner">
|
245
|
+
<div class="corner4"></div>
|
246
|
+
<div class="corner3"></div>
|
247
|
+
<div class="corner2"></div>
|
248
|
+
<div class="corner1"></div>
|
249
|
+
</div>
|
250
|
+
</div>
|
251
|
+
</div>
|
252
|
+
EOS
|
253
|
+
end
|
254
|
+
|
255
|
+
str +=<<"EOS"
|
256
|
+
<div id="messageBottom"></div>
|
257
|
+
<!--/ #messageArea--></div>
|
258
|
+
</div>
|
259
|
+
<div style="float: right;">
|
260
|
+
<a href="#" onClick="openclose('msgBox','msgBtn');blur();"><div id="msgBtn" class="#{cls}"></div></a>
|
261
|
+
</div>
|
262
|
+
EOS
|
263
|
+
|
264
|
+
# str = "" if msglist.blank?
|
265
|
+
return str
|
266
|
+
end
|
267
|
+
|
268
|
+
# メニュー
|
269
|
+
def menu(options = {})
|
270
|
+
|
271
|
+
str = "<ul id =\"navi\">\n"
|
272
|
+
str = str + "<li>#{link_to(:top, :controller => :top)}</li>\n"
|
273
|
+
# str = str + "<li>#{link_to(:top, :controller => :tops)}</li>\n"
|
274
|
+
str = str + "</ul>\n"
|
275
|
+
|
276
|
+
return str
|
277
|
+
end
|
278
|
+
|
279
|
+
# サブメニュー
|
280
|
+
def submenu
|
281
|
+
str =<<"EOS"
|
282
|
+
<div id="sub">
|
283
|
+
</div>
|
284
|
+
EOS
|
285
|
+
return str
|
286
|
+
end
|
287
|
+
|
288
|
+
# タブ
|
289
|
+
def tab_tag(objs, selected, form, element)
|
290
|
+
|
291
|
+
current_path = url_for(:controller => controller_name, :action => action_name)
|
292
|
+
jsstr =<<"EOS"
|
293
|
+
function change_tab(val){
|
294
|
+
document.getElementById('#{element}').value=val;
|
295
|
+
submit('#{current_path}', '#{form}', 'GET');
|
296
|
+
}
|
297
|
+
EOS
|
298
|
+
|
299
|
+
content_for :head do
|
300
|
+
jsstr
|
301
|
+
end
|
302
|
+
|
303
|
+
str = "<div id=\"tab\"><ul>"
|
304
|
+
|
305
|
+
objs.each{|obj|
|
306
|
+
selected = "" if selected.blank?
|
307
|
+
current = ""
|
308
|
+
current = "current" if obj.id.to_s == selected
|
309
|
+
path = link_to("<span>" + obj.name.to_s + "</span>", "javascript:change_tab('" + obj.id.to_s + "');")
|
310
|
+
str += "<li class=\"" + current + "\">" + path + "</li>"
|
311
|
+
}
|
312
|
+
|
313
|
+
str += "</ul></div>"
|
314
|
+
|
315
|
+
return str
|
316
|
+
end
|
317
|
+
|
318
|
+
# 必須入力メッセージ文言
|
319
|
+
def required_notice_tag(options = {})
|
320
|
+
" <p>#{required}印のついた項目は、必ず入力してください。</p> "
|
321
|
+
end
|
322
|
+
|
323
|
+
# フラッシュ
|
324
|
+
def flash_tag
|
325
|
+
e = "<div id=\"errorExplanation\" class=\"errorExplanation\"><h2>#{hbr(flash[:error])}</h2></div>" unless flash[:error].blank?
|
326
|
+
n = "<div id=\"actionMessage\" class=\"actionMessage\">#{hbr(flash[:notice])}</div>" unless flash[:notice].blank?
|
327
|
+
flash.clear
|
328
|
+
e.to_s + n.to_s
|
329
|
+
end
|
330
|
+
|
331
|
+
# 検索
|
332
|
+
def search_tag(options = {})
|
333
|
+
text_keyword = text_field_tag(:keyword, params[:keyword])
|
334
|
+
hidden_sort = hidden_field_tag(:sort, params[:sort])
|
335
|
+
hidden_order = hidden_field_tag(:order, params[:order])
|
336
|
+
other_tag = options[:other] unless options[:other].blank?
|
337
|
+
tab_tag = options[:tab] unless options[:tab].blank?
|
338
|
+
|
339
|
+
controller = controller_name
|
340
|
+
controller = options[:controller] unless options[:controller].blank?
|
341
|
+
action = :index
|
342
|
+
action = options[:action] unless options[:action].blank?
|
343
|
+
|
344
|
+
search_form = 'form_search'
|
345
|
+
search_path = url_for(:controller => controller, :action => action)
|
346
|
+
search_button = link_to image_tag('/images/btn_search.png', :alt => '検索', :style => 'vertical-align: middle;'), "javascript:submit('#{search_path}', '#{search_form}', 'GET')"
|
347
|
+
|
348
|
+
str =<<"EOS"
|
349
|
+
<form name=\"#{search_form}\">
|
350
|
+
<div style=\"clear: both;\">
|
351
|
+
#{tab_tag}
|
352
|
+
</div>
|
353
|
+
<div style=\"clear: both;\">
|
354
|
+
#{text_keyword}
|
355
|
+
#{hidden_sort}
|
356
|
+
#{hidden_order}
|
357
|
+
#{search_button}
|
358
|
+
#{refrech_button_tag}
|
359
|
+
#{other_tag}
|
360
|
+
</div>
|
361
|
+
</form>
|
362
|
+
EOS
|
363
|
+
return str
|
364
|
+
end
|
365
|
+
|
366
|
+
# ソート
|
367
|
+
def sort_tag(key)
|
368
|
+
asc = ! (!@app_search.blank? && @app_search.tag_sort == key && @app_search.tag_order == 'asc' )
|
369
|
+
desc = ! (!@app_search.blank? && @app_search.tag_sort == key && @app_search.tag_order == 'desc')
|
370
|
+
sort_asc = link_to_if asc, '▲', "javascript:sort('#{key}','asc' );"
|
371
|
+
sort_desc = link_to_if desc, '▼', "javascript:sort('#{key}','desc');"
|
372
|
+
sort_asc + ' ' + sort_desc
|
373
|
+
end
|
374
|
+
|
375
|
+
# 総件数
|
376
|
+
def counter_tag(options = {})
|
377
|
+
size = options[:size] unless options[:size].blank?
|
378
|
+
size = session[:ids].size if options[:size].blank?
|
379
|
+
|
380
|
+
str = <<"EOS"
|
381
|
+
<div style="float: right;" class="pagination">#{size}件</div>
|
382
|
+
EOS
|
383
|
+
end
|
384
|
+
|
385
|
+
# 前へ次へボタン
|
386
|
+
def prevnext_tag
|
387
|
+
ids = session[:ids]
|
388
|
+
now = params[:id]
|
389
|
+
prv = nxt = nil
|
390
|
+
ids.each_with_index{|id,i|
|
391
|
+
prv = nxt = nil
|
392
|
+
prv = ids[i-1] if (i > 0 && ids[i-1])
|
393
|
+
nxt = ids[i+1] if (i < ids.size && ids[i+1])
|
394
|
+
break if now.to_s == id.to_s
|
395
|
+
}
|
396
|
+
|
397
|
+
params = session[:prm]
|
398
|
+
params.delete(:controller)
|
399
|
+
params.delete(:action)
|
400
|
+
params.delete(:format)
|
401
|
+
|
402
|
+
button_prev = link_to image_tag('/images/arrow_l.png', :alt => '前へ'), {:controller => controller_name, :action => action_name, :id => prv} unless prv.blank?
|
403
|
+
button_next = link_to image_tag('/images/arrow_r.png', :alt => '次へ'), {:controller => controller_name, :action => action_name, :id => nxt} unless nxt.blank?
|
404
|
+
button_index = link_to image_tag('/images/tolist.png', :alt => '一覧へ'), {:controller => controller_name, :action => :index, :params => params}
|
405
|
+
|
406
|
+
str =<<"EOS"
|
407
|
+
<div class="leftBox">
|
408
|
+
<ul class="prevnxt">
|
409
|
+
<li class="prevnxt">#{button_prev}</li>
|
410
|
+
<li class="prevnxt">#{button_index}</li>
|
411
|
+
<li class="prevnxt">#{button_next}</li>
|
412
|
+
</ul>
|
413
|
+
</div>
|
414
|
+
EOS
|
415
|
+
end
|
416
|
+
|
417
|
+
# 新規作成ボタン
|
418
|
+
def new_button_tag
|
419
|
+
link_to image_tag('/images/btn_new.png', :alt => '新規作成', :style => 'vertical-align: middle;'), {:controller => controller_name, :action => :new}
|
420
|
+
end
|
421
|
+
|
422
|
+
# 最新に更新ボタン
|
423
|
+
def refrech_button_tag
|
424
|
+
link_to image_tag('/images/btn_reload.png', :alt => '最新に更新', :style => 'vertical-align: middle;'), {:controller => controller_name, :action => :index}
|
425
|
+
end
|
426
|
+
|
427
|
+
# 修正ボタン
|
428
|
+
def edit_button_tag
|
429
|
+
link_to image_tag('/images/btn_upd.png', :alt => '修正' ), {:controller => controller_name, :action => :edit, :id => params[:id]}
|
430
|
+
end
|
431
|
+
|
432
|
+
# 削除ボタン
|
433
|
+
def delete_button_tag(obj, options = {})
|
434
|
+
conf = ''
|
435
|
+
conf = options[:conf] unless options[:conf].blank?
|
436
|
+
conf = '削除してもよろしいですか?' if conf.blank?
|
437
|
+
|
438
|
+
link_to image_tag('/images/btn_delete.png', :alt => '削除', :style => 'float: right;'), obj, {:controller => controller_name, :confirm => conf, :method => :delete}
|
439
|
+
end
|
440
|
+
|
441
|
+
# 一覧ボタン
|
442
|
+
def index_button_tag(options = {})
|
443
|
+
if action_name == :show.to_s
|
444
|
+
params = session[:prm]
|
445
|
+
params.delete(:controller)
|
446
|
+
params.delete(:action)
|
447
|
+
params.delete(:format)
|
448
|
+
end
|
449
|
+
|
450
|
+
value = '/images/btn_back.png' if action_name == :show.to_s
|
451
|
+
value = '/images/btn_back.png' if action_name == :destroy.to_s
|
452
|
+
value = '/images/btn_cancel_cre.png' if action_name == :new.to_s
|
453
|
+
value = '/images/btn_cancel_cre.png' if action_name == :create.to_s
|
454
|
+
value = '/images/btn_cancel_cre.png' if action_name == :check.to_s
|
455
|
+
value = '/images/btn_cancel_cre.png' if action_name == :copy.to_s
|
456
|
+
value = '/images/btn_cancel_upd.png' if action_name == :edit.to_s
|
457
|
+
value = '/images/btn_cancel_upd.png' if action_name == :update.to_s
|
458
|
+
value = '/images/btn_cancel_upd.png' if action_name == :confirm.to_s
|
459
|
+
value = options[:value] unless options[:value].blank?
|
460
|
+
value = '/images/btn_back.png' if value.blank?
|
461
|
+
|
462
|
+
action = :index
|
463
|
+
action = options[:action] unless options[:action].blank?
|
464
|
+
|
465
|
+
alt = '一覧へ'
|
466
|
+
alt = options[:alt] unless options[:alt].blank?
|
467
|
+
|
468
|
+
link_to image_tag(value, :alt => alt), {:controller => controller_name, :action => action, :params => params}, {:confirm => options[:confirm]}
|
469
|
+
end
|
470
|
+
|
471
|
+
# 送信ボタン
|
472
|
+
def submit_button_tag(f, options = {})
|
473
|
+
value = '/images/btn_create.png' if action_name == :check.to_s
|
474
|
+
value = '/images/btn_update.png' if action_name == :confirm.to_s
|
475
|
+
value = "/images/btn_confirm_cre.png" if action_name == :new.to_s
|
476
|
+
value = '/images/btn_confirm_cre.png' if action_name == :create.to_s
|
477
|
+
value = '/images/btn_confirm_cre.png' if action_name == :check.to_s && f.error_messages.size > 0
|
478
|
+
value = '/images/btn_confirm_cre.png' if action_name == :copy.to_s
|
479
|
+
value = '/images/btn_confirm_upd.png' if action_name == :edit.to_s
|
480
|
+
value = '/images/btn_confirm_upd.png' if action_name == :update.to_s
|
481
|
+
value = '/images/btn_confirm_upd.png' if action_name == :confirm.to_s && f.error_messages.size > 0
|
482
|
+
value = options[:value] unless options[:value].blank?
|
483
|
+
value = '/images/btn_update.png' if value.blank?
|
484
|
+
|
485
|
+
image_submit_tag value, :confirm => options[:confirm], :onclick => options[:onclick]
|
486
|
+
end
|
487
|
+
|
488
|
+
# ポップ
|
489
|
+
def pop_button_tag(path, size, elm, type, options = {})
|
490
|
+
link_to("検索", "javascript:popSearch('" + path + "','" + size.to_s + "','" + elm + "','','" + type + "');")
|
491
|
+
end
|
492
|
+
|
493
|
+
# 検索ポップアップ
|
494
|
+
def pop_search_tag(elm, type)
|
495
|
+
pop_button_tag('/search', 750, elm, type)
|
496
|
+
end
|
497
|
+
|
498
|
+
# 戻るボタン
|
499
|
+
def back_button_tag(options = {})
|
500
|
+
value = '/images/btn_reenter.png'
|
501
|
+
value = options[:value] unless options[:value].blank?
|
502
|
+
|
503
|
+
action = :new if action_name == :check.to_s
|
504
|
+
action = :edit if action_name == :confirm.to_s
|
505
|
+
path = url_for(:controller => controller_name, :action => action, :id => params[:id])
|
506
|
+
|
507
|
+
link_to image_tag(value), "javascript:submit('#{path}')", {:confirm => options[:confirm]}
|
508
|
+
end
|
509
|
+
|
510
|
+
# トップへ戻るボタン
|
511
|
+
def top_button_tag(options = {})
|
512
|
+
value = '/images/btn_back.png'
|
513
|
+
alt = '戻る'
|
514
|
+
alt = options[:alt] unless options[:alt].blank?
|
515
|
+
link_to image_tag(value, :alt => alt), {:controller => :top, :action => :index}
|
516
|
+
end
|
517
|
+
|
518
|
+
# CSV出力ボタン
|
519
|
+
def csv_button_tag(options = {})
|
520
|
+
out = false
|
521
|
+
return unless options[:out].blank?
|
522
|
+
style = 'vertical-align: middle;'
|
523
|
+
style = '' if action_name == :show.to_s
|
524
|
+
url = url_for(params.merge(params))
|
525
|
+
url = url_for(params.merge(:format => :csv))
|
526
|
+
link_to image_tag('/images/btn_csv.png', :alt => 'CSV出力', :style => style), url, {:confirm => 'CSVを出力しますか?', :target => '_blank'}
|
527
|
+
end
|
528
|
+
|
529
|
+
# コピーボタン
|
530
|
+
def copy_button_tag(options = {})
|
531
|
+
value = '/images/btn_copy.png'
|
532
|
+
value = options[:value] unless options[:value].blank?
|
533
|
+
alt = '流用作成'
|
534
|
+
alt = options[:alt] unless options[:alt].blank?
|
535
|
+
controller = controller_name
|
536
|
+
controller = options[:controller] unless options[:controller].blank?
|
537
|
+
action = :copy
|
538
|
+
action = options[:action] unless options[:action].blank?
|
539
|
+
path = url_for(:controller => controller, :action => action)
|
540
|
+
link_to image_tag(value, :alt => alt), "javascript:submit('#{path}')"
|
541
|
+
end
|
542
|
+
|
543
|
+
# クリアボタン
|
544
|
+
def clear_button_tag(options = {})
|
545
|
+
# link_to image_tag('/images/btn_clear.png', :alt => 'クリア'), {:confirm => options[:confirm]}
|
546
|
+
end
|
547
|
+
|
548
|
+
# 閉じるボタン
|
549
|
+
def close_button_tag(options = {})
|
550
|
+
link_to image_tag('/images/btn_close.png', :alt => '閉じる'), "javascript:windowClose()"
|
551
|
+
end
|
552
|
+
|
553
|
+
# カレンダー選択値クリアボタン
|
554
|
+
def clear_cal_button_tag(options = {})
|
555
|
+
button_to_function("クリア", "showCalClearBtn(this)", :class => "clearCalBtn")
|
556
|
+
end
|
557
|
+
|
558
|
+
end
|