users/index from gagarin
[opensuse:yast-web-client.git] / plugins / users / app / views / users / index.html.erb
1 <!--
2 # Copyright (c) 2009-2010 Novell, Inc.
3
4 # All Rights Reserved.
5
6 # This program is free software; you can redistribute it and/or modify it
7 # under the terms of version 2 of the GNU General Public License
8 # as published by the Free Software Foundation.
9
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, contact Novell, Inc.
17
18 # To contact Novell about this file by physical or electronic mail,
19 # you may find current contact information at www.novell.com
20 -->
21
22 <% content_for :head do %>
23
24 <%= javascript_include_tag "jquery.quicksearch.js"-%>
25 <%= javascript_include_tag "digitalspaghetti.password.js" %>
26 <%= javascript_include_tag "users_edit.js" %>
27
28  <style>
29     .pad1_2em {
30         padding: 1em 2em;
31     }
32     tr {
33         border: solid 1px #ddd;
34     }
35     label, .qs_input {
36         width: auto !important;
37     }
38     .label {
39         min-width: 10em;
40         float: left;
41         margin-left: 1em
42     }
43     #password-strength {
44         left: 0em;
45     }
46  </style>
47
48  <% javascript_tag do %>
49  jQuery.expr[':'].Contains = function(a, i, m) {
50   return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
51  };
52
53  $(document).ready(function(){
54
55 // make the error message translatable - override the default messsage
56    $.extend($.validator.messages, {
57      equalTo:  "<%= _(" The passwords do not match.") -%>",
58      required: "<%= _("This field is required.") -%>"
59    });
60
61  for(var i=0;i<$('.edit_user').length;i++){
62   var id=$('.edit_user')[i].id;
63    $("#"+id).validate()
64
65    $("#"+id).validate({
66     rules: {
67       user_password: "required",
68       user_password2: {
69         equalTo: "#user_password"
70       }
71     }
72    });
73
74    $("#"+id+" #user_user_password").pstrength({
75       'displayMinChar'      : true,
76       'minCharText'      : "<%= _("Password Strength:") %>", 
77       'verdicts'      : [
78             "<%= _("Weak") %>",
79             "<%= _("Normal") %>",
80             "<%= _("Medium") %>",
81             "<%= _("Strong") %>",
82             "<%= _("Very Strong") %>"
83           ],
84       });
85  }
86
87       $(".accordion").accordion({
88          autoHeight : false,
89          navigation : true,
90          collapsible: true,
91          header     : 'div.list-fieldset div.list-fieldset-header'
92       });
93
94       $(".accordion").accordion('activate', false);
95
96   $('input#users_search').quicksearch('div.list-fieldset', {
97           selector: 'span.quicksearch_content',
98           delay: 100
99   });
100
101
102 });//document.ready
103
104 function disable(which){
105  if (which.childNodes.length == 2 && which.childNodes[0].firstChild.alt == "delete"){
106   which.onclick="";
107   which.removeChild(which.childNodes[1]);
108   which.removeChild(which.childNodes[0]);
109   which.appendChild( document.createTextNode("<%= _("Processing ...") %>") );
110  }
111 }
112 <% end %>
113
114 <% end %>
115 <div class='plugin-icon'><img src='/icons/yast-users.png'/><%=_("Users")%></div>
116 <div class="plugin-content grid_12">
117
118 <form action="#" id="quicksearch" class="pad1_2em">
119   <label><%= _("Filter:") %></label>
120   <input type="text" id="users_search"/>
121 </form>
122
123 <div class='pad1_2em'>
124 <% if @permissions[:useradd] %>
125 <%= link_to _("Add New User"), :action => :new, :onclick=>"$('#progress').show()" -%>
126 <% end %>
127
128  <div id="users" class="accordion">
129  <% disabled = ! @permissions[:usermodify] %>
130   <% for user in @users %>
131    <div class="list-fieldset">
132
133     <div class="list-fieldset-header">
134      <span class="quicksearch_content">
135       <%= h user.uid -%> (<%= h user.cn || "-none-" -%>)
136      </span>
137     </div>
138
139     <div class='user-content' style="display:none">
140      <% form_for (user, :url => { :action => "update" }, :html => { :method => :put, :id => "form_"+user.uid, :onsubmit => "$('#progress').show()", :autocomplete => :off } ) do |f| %>
141       <%= f.error_messages %>
142         <table border=0>
143
144         <tr><td>
145           <div class="label"><%=_("Full Name")%></div>
146         </td><td>
147           <%= f.text_field :cn , :disabled => disabled, :onblur => "propose_login(this);" %>
148         </td></tr>
149
150         <tr><td>
151           <div class="label"><%=_("Login Name")%></div>
152         </td><td>
153           <%= f.text_field :uid, :disabled => disabled, :onblur => "$('#form_"+user.uid+"').validate().element('#user_uid') && propose_home(this);", :class => "required" %>
154           <%= f.text_field :id, :class => "hidden" %>
155         </td></tr>
156
157         <tr><td>
158           <div class="label"><%=_("Password")%></div>
159         </td><td>
160           <%= f.password_field :user_password, :onkeyup => "$('#form_"+user.uid+"').validate().element('#user_user_password');", :disabled => disabled %>
161         </td></tr>
162
163         <tr><td>
164           <div class="label"><%=_("Confirm Password")%></div>
165         </td><td>
166           <%= f.password_field :user_password2, :disabled => disabled, :equalTo => "#user_user_password", :onkeyup => "$('#form_"+user.uid+"').validate().element('#user_user_password2');" %>
167           <label for="user_user_password2" generated="true" class="error"></label>
168         </td></tr>
169
170         <tr><td>
171             <div class="label"><%=_("Groups")%></div>
172         </td><td>
173             <%= f.text_field :grp_string, :disabled => disabled, :onkeyup => "groups_validation(this);" %>
174             <label id="groups-error" class="error"></label>
175         </td></tr>
176
177         <tr><td>
178             <div class="label"><%=_("Default Group")%></div>
179         </td><td>
180             <%= f.text_field :groupname, :disabled => disabled %>
181         </td></tr>
182
183         <tr><td>
184             <div class="label"><%=_("Home Directory")%></div>
185         </td><td>
186             <%= f.text_field :home_directory, :disabled => disabled %>
187         </td></tr>
188
189
190         <tr><td>
191             <div class="label"><%=_("Login Shell")%></div>
192         </td><td>
193             <%= f.text_field :login_shell, :disabled => disabled %>
194         </td></tr>
195
196         <tr><td>
197             <div class="label"><%=_("UID Number")%></div>
198         </td><td>
199             <%= f.text_field :uid_number, :disabled => disabled, :min => 1000, :class => "number", :onkeyup => "$('#form_"+user.uid+"').validate().element('#user_uid_number');"  %>
200             <label id="uid-error" class="error"></label>
201         </td></tr>
202
203         </table>
204
205      <%= form_next_button :label => _("Save"), :onclick=>"return edit_user_validation(this, '#form_"+user.uid+"');"  %>
206      <% if @permissions[:userdelete] %>
207       <span onclick="disable(this);"><%= link_to _("Delete"),
208                             {:action => 'destroy', :id => user.uid},
209                             {:confirm => _("Are you sure to delete user '%s'?") % user.uid, :method => :destroy, :class => :button} %></span>
210      <% end %>
211     </div>
212
213     <% end %>
214    </div>
215   <% end %>
216  </div>
217
218
219 <fieldset>
220   <%= form_back_button -%>
221 </fieldset>
222 <%= link_to _("Manage Groups"), "controller" => "groups" %>
223 </div>
224             <div><input type="hidden" id="all_grps_string" value="<%= @all_grps_string %>" /></div>
225 </div>
226