ref: refs/heads/master
commit 7c27ab84c4c2a20383d35d4c58063b8236788475
Author: Martin Vidner
Date: Fri Aug 14 13:09:04 2009 +0200
Revert "reduced code for simple start/stop service tasks (fate 306696)"
This reverts commit 627fad3ec2e1e26ebc80983cad215f122188ad24.
---
.../app/controllers/config_ntp_controller.rb | 53 +++++++++
.../app/controllers/services_controller.rb | 123 ++++++++++++--------
plugins/services/app/models/config_ntp.rb | 6 +
plugins/services/app/models/service.rb | 5 +
.../services/app/views/config_ntp/show.html.erb | 32 +++++
.../services/app/views/services/fancy_index.rhtml | 122 +++++++++++++++++++
plugins/services/app/views/services/index.rhtml | 38 +++---
7 files changed, 312 insertions(+), 67 deletions(-)
diff --git a/plugins/services/app/controllers/config_ntp_controller.rb b/plugins/services/app/controllers/config_ntp_controller.rb
new file mode 100644
index 0000000..82de4a3
--- /dev/null
+++ b/plugins/services/app/controllers/config_ntp_controller.rb
@@ -0,0 +1,53 @@
+class ConfigNtpController < ApplicationController
+ before_filter :login_required
+ layout 'main'
+
+ # Initialize GetText and Content-Type.
+ init_gettext "yast_webclient_services" # textdomain, options(:charset, :content_type)
+
+ def show
+ @client = YaST::ServiceResource.proxy_for('org.opensuse.yast.system.services')
+ @permissions = @client.permissions
+
+ @ntp = ConfigNtp.find(:one, :from => '/services/ntp/config.xml')
+ logger.debug "ConfigNtp: #{@ntp.inspect}"
+
+ if @ntp.enabled == true
+ @is_enabled = "checked"
+ else
+ @is_enabled = ""
+ end
+ if @ntp.use_random_server == true
+ @is_use_random_server = "checked"
+ else
+ @is_use_random_server = ""
+ end
+ end
+
+ def create
+ @ntp = ConfigNtp.find(:one, :from => '/services/ntp/config.xml')
+ logger.debug "ConfigNtp: #{@ntp.inspect}"
+ logger.debug "Changing to #{params.inspect}"
+ @ntp.manual_server = params[:manual_server]
+ if params[:enabled] == "true"
+ @ntp.enabled = true
+ else
+ @ntp.enabled = false
+ end
+ if params[:use_random_server] == "true"
+ @ntp.use_random_server = true
+ else
+ @ntp.use_random_server = false
+ end
+ @ntp.id = "ntp"
+ response = @ntp.put(:config, {}, @ntp.to_xml)
+ retNtp = Hash.from_xml(response.body)
+ if retNtp["config_ntp"]["error_id"] != 0
+ flash[:error] = retNtp["config_ntp"]["error_string"]
+ else
+ flash[:notice] = _("Settings have been written.")
+ end
+ redirect_to :action => :show
+ end
+
+end
diff --git a/plugins/services/app/controllers/services_controller.rb b/plugins/services/app/controllers/services_controller.rb
index 57ebe58..9932336 100644
--- a/plugins/services/app/controllers/services_controller.rb
+++ b/plugins/services/app/controllers/services_controller.rb
@@ -1,70 +1,95 @@
-require 'yast/service_resource'
+require 'service'
class ServicesController < ApplicationController
before_filter :login_required
layout 'main'
- private
- def client_permissions
- @client = YaST::ServiceResource.proxy_for('org.opensuse.yast.modules.yapi.services')
- unless @client
- flash[:notice] = _("Invalid session, please login again.")
- redirect_to( logout_path ) and return
- end
- @permissions = @client.permissions
- end
-
# Initialize GetText and Content-Type.
init_gettext "yast_webclient_services" # textdomain, options(:charset, :content_type)
- public
+ def index
+ proxy = YaST::ServiceResource.proxy_for('org.opensuse.yast.system.services')
+ @permissions = proxy.permissions
- def initialize
- end
+ @services = Service.find(:all, :from => '/services.xml')
+ @table = []
+ counter = 1
+ max_column = 0
+ table_counter = 1
+ @services.each do | s |
+ @services[counter-1].command_list = []
+ commands = %w{status start stop restart force-reload bogus} # FIXME s.commands is gone
+ commands.each do | comm |
+ cname = comm # FIXME comm.name is gone
+ iname = cname
+ case iname
+ when "run"
+ iname = "start"
+ when "try-restart"
+ iname = "restart"
+ when "force-reload"
+ iname = "reload"
+ else
+ iname = "empty"
+ end
+ c = {:name => cname, :icon => "/images/#{iname}.png" }
+ @services[counter-1].command_list << c
+ end
- # GET /services
- # GET /services.xml
- def index
- return unless client_permissions
- @services = []
- begin
- @services = @client.find(:all)
- rescue ActiveResource::ClientError => e
- flash[:error] = YaST::ServiceResource.error(e)
+ if s.link == "ntp"
+ #add configuration module if there is a read permission
+ c = {:name=>"configure", :icon=>"/images/configure.png" }
+ @services[counter-1].command_list << c
+ end
+ if @services[counter-1].command_list.size > max_column
+ max_column = @services[counter-1].command_list.size
+ end
+ if table_counter * 4 == counter #next table have to begin
+ @table << max_column
+ table_counter +=1
+ max_column = 0
+ end
+ counter += 1
+ end
+ if max_column > 0
+ @table << max_column #add last table
+ end
+ if params[:last_error] && params[:last_error] != 0
+ @last_result = params[:last_error]
+ else
+ @last_result = 0
+ end
+ if params[:last_error_string]
+ @last_result_string = params[:last_error_string]
+ else
+ @last_result_string = ""
end
- respond_to do |format|
- format.html # index.html.erb
- format.xml { render :xml => @services }
+ if params[:fancy] == "1"
+ render :fancy_index and return
end
end
def execute
- return unless client_permissions
- @service = @client.find(params[:service_id])
+ @service = Service.find(params[:service_id])
+ @service.id = @service.link
+ command_id = "commands/" + params[:id]
+ logger.debug "calling #{command_id} with service #{@service.inspect}"
+ response = @service.put(command_id)
- @service.execute = params[:id]
- @service.save
-
-# @service.id = @service.link
-# command_id = "commands/" + params[:id]
-# logger.debug "calling #{command_id} with service #{@service.inspect}"
-# response = @service.put(command_id)
-#
-# # we get a hash with exit, stderr, stdout
-# ret = Hash.from_xml(response.body)
-# ret = ret["hash"]
-# logger.debug "returns #{ret.inspect}"
-#
-# @result_string = ""
-# @result_string << ret["stdout"] if ret["stdout"]
-# @result_string << ret["stderr"] if ret["stderr"]
-# @error_string = ret["exit"].to_s # TODO translate exit codes (use YaST?)
-# if ret["exit"] == 0
-# @error_string = _("success")
-# end
+ # we get a hash with exit, stderr, stdout
+ ret = Hash.from_xml(response.body)
+ ret = ret["hash"]
+ logger.debug "returns #{ret.inspect}"
+
+ @result_string = ""
+ @result_string << ret["stdout"] if ret["stdout"]
+ @result_string << ret["stderr"] if ret["stderr"]
+ @error_string = ret["exit"].to_s # TODO translate exit codes (use YaST?)
+ if ret["exit"] == 0
+ @error_string = _("success")
+ end
render(:partial =>'result')
end
-
end
diff --git a/plugins/services/app/models/config_ntp.rb b/plugins/services/app/models/config_ntp.rb
new file mode 100644
index 0000000..9d24b74
--- /dev/null
+++ b/plugins/services/app/models/config_ntp.rb
@@ -0,0 +1,6 @@
+require 'yast/service_resource'
+
+class ConfigNtp< YaST::ServiceResource::Base
+ self.collection_name = "services"
+ self.element_name = "config_ntp"
+end
diff --git a/plugins/services/app/models/service.rb b/plugins/services/app/models/service.rb
new file mode 100644
index 0000000..870ad2f
--- /dev/null
+++ b/plugins/services/app/models/service.rb
@@ -0,0 +1,5 @@
+require 'yast/service_resource'
+
+class Service < YaST::ServiceResource::Base
+ attr_accessor :commandList
+end
diff --git a/plugins/services/app/views/config_ntp/show.html.erb b/plugins/services/app/views/config_ntp/show.html.erb
new file mode 100644
index 0000000..c2b28df
--- /dev/null
+++ b/plugins/services/app/views/config_ntp/show.html.erb
@@ -0,0 +1,32 @@
+<h1><%=_("NTP Server")%></h1>
+<br>
+
+<% form_tag 'config' do %>
+ <div class="table">
+ <img src="/images/bg-th-left.gif" width="8" height="7" alt="" class="left" />
+ <img src="/images/bg-th-right.gif" width="7" height="7" alt="" class="right" />
+ <table class="listing form" cellpadding="0" cellspacing="0">
+ <tr>
+ <th class="full" colspan="2"><%=_("Settings")%></th>
+ </tr>
+ <tr>
+ <td class="first" width="120"><strong><%=_("Enabled")%></strong></td>
+ <td class="last"> <%= "disabled=\"disabled\"" if !@permissions[:write] %>></td>
+ </tr>
+ <tr class="bg">
+ <td class="first"><strong><%=_("Use random server")%></strong></td>
+ <td class="last"> <%= "disabled=\"disabled\"" if !@permissions[:write] %>></td>
+ </tr>
+ <tr>
+ <td class="first"><strong><%=_("Manual Servers")%></strong></td>
+ <td class="last"><%= text_field_tag "manual_server", @ntp.manual_server , :disabled=>!@permissions[:write]%></td>
+ </tr>
+ </table>
+ <p><%= submit_tag _("Save"), :disabled=> !@permissions[:write] -%><%= link_to _('Back'), {:controller => 'services'}, :class => "button" %></p>
+ </div>
+<% end %>
+
+
+
+
+
diff --git a/plugins/services/app/views/services/fancy_index.rhtml b/plugins/services/app/views/services/fancy_index.rhtml
new file mode 100644
index 0000000..8c6884c
--- /dev/null
+++ b/plugins/services/app/views/services/fancy_index.rhtml
@@ -0,0 +1,122 @@
+<%= javascript_include_tag :defaults %>
+
+<script language="javascript">
+
+ YAHOO.namespace('yuiresult');
+
+ function initResultDialog() {
+ var handleCancel = function() {
+ this.cancel();
+ }
+
+ YAHOO.yuiresult.resultDialog = new YAHOO.widget.Dialog("resultdlg", {
+ width: "625px",
+ modal: true,
+ visible: false,
+ fixedcenter: true,
+ constraintoviewport: true,
+ draggable: true });
+
+ YAHOO.yuiresult.resultDialog.render();
+ }
+
+ function showResultDialog() {
+ YAHOO.yuiresult.resultDialog.show();
+ }
+
+ YAHOO.util.Event.addListener(window, "load", initResultDialog);
+</script>
+
+
+<!-- begin: dialog box -->
+<div id="resultdlg">
+</div>
+<!-- end: dialog box -->
+
+<h1><%=_("Services")%></h1>
+<br>
+
+<% if ! @permissions[:execute] %>
+<!-- TODO generalize this to all views -->
+<p>You do not have permission to execute the services. The links are disabled.</p>
+<% end %>
+<% for table_counter in 0..@table.size-1 do %>
+ <div class="table">
+ <img src="/images/bg-th-left.gif" width="8" height="7" alt="" class="left" />
+ <img src="/images/bg-th-right.gif" width="7" height="7" alt="" class="right" />
+ <table class="listing" cellpadding="0" cellspacing="0">
+ <tr>
+ <% for column_counter in 0..3 do %>
+ <% i = table_counter*4+column_counter %>
+ <% if @services.size > i %>
+ <% link = @services[i].link %>
+ <% if column_counter == 0 %>
+ <th class="first" width=17%><%=h link %></th>
+ <% elsif column_counter == 3 %>
+ <th class="last" width=17%><%=h link %></th>
+ <% else %>
+ <th width=17%><%=h link %></th>
+ <% end %>
+ <% else %>
+ <% if column_counter == 3 %>
+ <th class="last" width=17%></th>
+ <% else %>
+ <th width=17%></th>
+ <% end %>
+ <% end %>
+ <% end %>
+ </tr>
+ <% for line_counter in 0..@table[table_counter]-1 do %>
+ <tr>
+ <% for column_counter in 0..3 do %>
+ <% i = table_counter*4+column_counter %>
+ <% if @services.size > i %>
+ <% command_list = @services[i].command_list %>
+ <% link = @services[i].link %>
+ <% if line_counter < command_list.size %>
+ <td>
+ <% if command_list[line_counter][:name] == "configure" %>
+ <%= link_to image_tag("#{command_list[line_counter][:icon]}", :alt => "icon"),
+ :id=>"config",
+ :action =>link %>
+ <strong><%= link_to "#{command_list[line_counter][:name]}", :id=>"config",
+ :action =>link %></strong>
+ <% else %>
+ <% if @permissions[:execute] %>
+ <%= link_to_remote image_tag("#{command_list[line_counter][:icon]}", :alt => "icon"),
+ :update => "resultdlg",
+ :url=>{ :id=> command_list[line_counter][:name],
+ :action => "execute",
+ :service_id=> link },
+ :loading => "Element.show('progress');",
+ :complete => "Element.hide('progress'); showResultDialog();" %>
+ <strong><%= link_to_remote "#{command_list[line_counter][:name]}",
+ :update => "resultdlg",
+ :url=>{ :id=> command_list[line_counter][:name],
+ :action => "execute",
+ :service_id=> link },
+ :loading => "Element.show('progress');",
+ :complete => "Element.hide('progress'); showResultDialog();"
+ %></strong>
+ <% else %>
+ <%= image_tag("#{command_list[line_counter][:icon]}", :alt => "icon") %>
+ <strong><span style="color: #BDBDBD"><%="#{command_list[line_counter][:name]}" -%></span></strong>
+ <% end %>
+ <% end %>
+ </td>
+ <% else %>
+ <td> </td>
+ <% end %>
+ <% else %>
+ <% if column_counter == 3 %>
+ <td class="last" width=17%></td>
+ <% else %>
+ <td width=17%></td>
+ <% end %>
+ <% end %>
+ <% end %>
+ </tr>
+ <% end %>
+ </table>
+ </div>
+<% end %>
diff --git a/plugins/services/app/views/services/index.rhtml b/plugins/services/app/views/services/index.rhtml
index ff71692..c3d63d8 100644
--- a/plugins/services/app/views/services/index.rhtml
+++ b/plugins/services/app/views/services/index.rhtml
@@ -27,6 +27,7 @@
YAHOO.util.Event.addListener(window, "load", initResultDialog);
</script>
+
<!-- begin: dialog box -->
<div id="resultdlg">
</div>
@@ -39,29 +40,30 @@
<br>
<% if ! @permissions[:execute] %>
-<p><%=_("You do not have permission to execute the services. The links are disabled.")%></p>
+<!-- TODO generalize this to all views -->
+<p>You do not have permission to execute the services. The links are disabled.</p>
<% end %>
<ul>
-<% @services.each do |service| %>
-<li><b><%=h service.name %></b>
- <% [ "start", "stop" ].each do |cmd|
- if @permissions[:execute] %>
- <%=
- link_to_remote cmd,
+<% @services.each do |svc| %>
+<li><b><%=h svc.link %></b>
+ <% svc.command_list.each do |cmd|
+ if cmd[:name] == "configure" %>
+ <%= link_to cmd[:name], :id=>"config", :action =>svc.link %>
+ <% else
+ if @permissions[:execute] %>
+ <%= link_to_remote cmd[:name],
:update => "resultdlg",
- :url=>{ :id=> cmd,
+ :url=>{ :id=> cmd[:name],
:action => "execute",
- :service_id=> service.name
- }
-# :loading => "Element.show('progress')"
-# :complete => "Element.hide('progress'); showResultDialog();"
- %>
- <%
- else %>
- <span style="color: #BDBDBD"><%="#{cmd}" -%></span>
- <%
- end
+ :service_id=> svc.link },
+ :loading => "Element.show('progress');",
+ :complete => "Element.hide('progress'); showResultDialog();"
+ %>
+ <% else %>
+ <span style="color: #BDBDBD"><%="#{cmd[:name]}" -%></span>
+ <% end
+ end
end %>
</li>
<% end %>
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org