ava_rails_generator 0.0.2
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.
- 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
|