do not install packages if the language will be changed
[opensuse:yast-rest-service.git] / webservice / app / controllers / language_controller.rb
1 include ApplicationHelper
2
3 class LanguageController < ApplicationController
4
5 require "scr"
6
7 #--------------------------------------------------------------------------------
8 #
9 #local methods
10 #
11 #--------------------------------------------------------------------------------
12
13 #
14 # get
15 #
16
17
18   def get_available
19      ret = Scr.execute("LANG=en.UTF-8 /sbin/yast2 language list")
20      @language.available = ret[:stderr].split "\n"
21   end
22
23   def get_languages
24      ret = Scr.execute("LANG=en.UTF-8 /sbin/yast2 language summary")
25      lines = ret[:stderr].split "\n"
26      lines::each do |s|         
27        column = s.split (" ")
28        case column[0]
29          when "Current"
30            @language.firstLanguage = column[2] 
31          when "Additional"
32            @language.secondLanguages = column[2] 
33        end
34      end
35   end
36
37 #
38 # set
39 #
40
41   def set_firstLanguage (language)
42     command = "/sbin/yast2  language set lang=#{language} no_packages"
43     Scr.execute(command)
44   end
45
46   def set_secondLanguages (languages)
47     command = "/sbin/yast2  language set languages=#{languages} no_packages"
48     Scr.execute(command)
49   end
50
51
52
53 #--------------------------------------------------------------------------------
54 #
55 # actions
56 #
57 #--------------------------------------------------------------------------------
58         
59   def update
60     respond_to do |format|
61       language = Language.new
62       if language.update_attributes(params[:language])
63         logger.debug "UPDATED: #{language.inspect}"
64
65         set_firstLanguage language.firstLanguage
66         set_secondLanguages language.secondLanguages
67
68         format.html { redirect_to :action => "show" }
69         format.json { head :ok }
70         format.xml { head :ok }
71       else
72         format.html { render :action => "edit" }
73         format.xml  { render :xml => language.errors,
74           :status => :unprocessable_entity }
75       end
76     end
77   end
78
79   def index
80     @language = Language.new
81     get_languages
82     get_available
83
84     respond_to do |format|
85       format.xml do
86         render :xml => @language.to_xml( :root => "language",
87           :dasherize => false )
88       end
89       format.json do
90         render :json => @language.to_json
91       end
92       format.html do
93         render 
94       end
95     end
96   end
97
98   def show
99     index
100   end
101
102   def singleValue
103     if request.get?
104       # GET
105       @language = Language.new
106       
107       #initialize not needed stuff (perhaps no permissions available)
108       case params[:id]
109         when "firstLanguage"
110           get_languages
111           @language.secondLanguages=nil
112         when "secondLanguages"
113           get_languages  
114           @language.firstLanguage=nil
115         when "available"
116           get_available
117       end
118
119       respond_to do |format|
120         format.xml do
121           render :xml => @language.to_xml( :root => "language",
122             :dasherize => false )
123         end
124         format.json do
125           render :json => @language.to_json
126         end
127         format.html do
128           render :file => "#{RAILS_ROOT}/app/views/language/index.html.erb"
129         end
130       end      
131     else
132       #PUT
133       respond_to do |format|
134         @language = Language.new
135         if @language.update_attributes(params[:language])
136           logger.debug "UPDATED: #{@language.inspect}"
137           ok = true
138           case params[:id]
139             when "firstLanguage"
140               set_firstLanguage @language.fistLanguage
141             when "secondLanguages"
142               set_secondLanguages @language.secondLanguages
143             else
144               logger.error "Wrong ID: #{params[:id]}"
145               ok = false
146           end
147
148           format.html { redirect_to :action => "show" }
149           if ok
150             format.json { head :ok }
151             format.xml { head :ok }
152           else
153             format.json { head :error }
154             format.xml { head :error }
155           end
156         else
157           format.html { render :action => "edit" }
158           format.xml  { render :xml => @language.errors,
159             :status => :unprocessable_entity }
160         end
161       end
162     end
163   end
164
165
166 end