-# このページ内専用のjavascriptでjQueryオブジェクトを参照したい場合この関数に記述
:javascript
local_initialize_functions.push(function($) {
$("[data-toggle=tooltip]").tooltip({
animation: false,
container: "body",
});
// セレクトボタン設定
$(".selectpicker").selectpicker({
container: "body",
width: "100%"
});
var storage = new Narou.Storage;
// 直前に開いていたタブを復元
var related_active_tab = storage.get("related_active_tab");
if (related_active_tab) {
$('a[href="#' + related_active_tab + '"]').tab("show");
}
// 開いたタブを記憶しておく
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var active_tab = (e.target + "").split("#")[1];
storage.set("related_active_tab", active_tab);
storage.save();
})
});
%form(action="/settings" method="POST")
.navbar.navbar-default.navbar-fixed-top(role="navigation")
.container
.navbar-header
%button.navbar-toggle(type="button")
%span.sr-only Toggle navigation
%span.icon-bar
%span.icon-bar
%span.icon-bar
%a.navbar-brand(href="#" data-move-to="top") Narou.rb WEB UI
.collapse.navbar-collapse
%ul.nav.navbar-nav
%li.active
%a(href="/settings") 環境設定
%li
%a(href="/help") ヘルプ
%li
%a(href="/") 戻る
.navbar-form.navbar-left
%input.btn.btn-info(type="submit" value="設定を保存" style="margin-left: 50px")
%p#queue-text.navbar-text.navbar-right(data-toggle="tooltip" title="キューに積まれた処理の数" data-placement="bottom")
%span.glyphicon.glyphicon-inbox
%span#queue 0
.container.container-main.theme-showcase(role="main")
.container-settings
- inventory = Inventory.load("local_setting").merge(Inventory.load("global_setting", :global))
- local_and_global_variables = @setting_variables[:local].merge(@setting_variables[:global])
- tab_info = Command::Setting.get_setting_tab_info
- error_tabs = @error_list.map { |name, _| local_and_global_variables[name][:tab] }.uniq
%p
%ul.nav.nav-pills(role="tablist")
- Command::Setting.get_setting_tab_names.each.with_index do |(key, name), index|
%li(role="presentation"){class: index == 0 ? "active" : nil}
%a{ href: "##{key}", :"aria-controls" => "#{key}", role: "tab", :"data-toggle" => "tab" }
= name
- if error_tabs.include?(key)
%span.text-danger.glyphicon.glyphicon-exclamation-sign
%li(role="presentation")
%a(href="#replace" aria-controls="replace" role="tab" data-toggle="tab")
置換設定
-# :tab が設定されていないものを hidden として設定しておく
- local_and_global_variables.each do |name, value|
- unless value[:tab]
- item = inventory[name]
- if value[:type] == :boolean
- hidden_value = convert_boolean_to_on_off(item)
- else
- hidden_value = item
%input{type:"hidden", name:name, value:hidden_value}
.tab-content
- Command::Setting.get_setting_tab_names.each.with_index do |(key, _), index|
.tab-pane{ role: "tabpanel", id: "#{key}", class: index == 0 ? "active" : nil }
.panel.panel-info.panel-settings
- if tab_info.has_key?(key)
.panel-heading
= tab_info[key]
.list-group
- local_and_global_variables.each do |name, value|
- next if value[:tab] != key
- item = inventory[name]
- need_clear = false
- message = Narou::SETTING_VARIABLES_WEBUI_MESSAGES[name] || value[:help]
- message = message.strip.gsub("\n", "
")
- error_style = {class: "has-error", style: "background-color:#f2dede"}
.list-group-item.form-group{@error_list[name] ? error_style : {}}
%h4.list-group-item-heading #{name}
.list-group-item-text
- case value[:type]
- when :boolean
- if name =~ /^(force|default)\./
.switch-toggle.well.switch-3
%label(for="#{name}-nil")
未設定
%label(for="#{name}-false")
いいえ
%label(for="#{name}-true")
はい
%a.btn.btn-primary
- else
%label.switch-light.well
%span
%span いいえ
%span はい
%a.btn.btn-primary
- when :select
%div.input-style
%select{name: name, class: "selectpicker show-tick"}
%option(value="")
- if name == "webui.theme"
デフォルト
- else
未設定
- value[:select_keys].each_with_index do |key, index|
%option{selected: item == key, value: key}
= value[:select_summaries][index]
- need_clear = true
- when :multiple
%div.input-style
%select{name: "#{name}[]", class: "selectpicker", multiple: true,
title: "未設定", "data-selected-text-format" => "count"}
- selected_items = item.to_s.split(",")
- value[:select_keys].each_with_index do |key, index|
%option{selected: selected_items.include?(key), value: key}
= value[:select_summaries][index]
- need_clear = true
- else
%input{type:"text", name:name, value:item, class:"form-control",
placeholder:Helper.variable_type_to_description(value[:type]).strip }
- need_clear = true
%p
= message != "" ? message : " "
- if @error_list[name]
%p.alert-danger
= @error_list[name]
- if need_clear
.clearfix
.tab-pane(role="tabpanel" id="replace")
- replace_panel_var = { title: "全小説対象の置換設定",
panel_class: "panel-info",
body_class: "list-group-item-default",
body: ["・全ての小説に対する置換設定を行うことが出来ます",
"・変更を反映させるには再度変換を実行する必要があります"] }
= haml :_edit_replace_txt, locals: { replace_panel_var: replace_panel_var }
%input(type="submit" value="設定を保存" class="btn btn-info" style="float:none")