aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-server/src/main/webapp
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@gmail.com>2012-09-21 18:20:35 +0200
committerSimon Brandhof <simon.brandhof@gmail.com>2012-09-21 18:20:35 +0200
commitc9f399f5a7cd0f5e2fced05cb3f277091fb8542d (patch)
tree39041dc10383bfa328442c73b859855b2bbb8af2 /sonar-server/src/main/webapp
parentaeaa56989dee0331aba21529c52975423e37859d (diff)
downloadsonarqube-c9f399f5a7cd0f5e2fced05cb3f277091fb8542d.tar.gz
sonarqube-c9f399f5a7cd0f5e2fced05cb3f277091fb8542d.zip
SONAR-3623 use modal windows for renaming Q profiles
Diffstat (limited to 'sonar-server/src/main/webapp')
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb32
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_head.html.erb2
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_rename_form.html.erb38
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/profiles/index.html.erb16
-rw-r--r--sonar-server/src/main/webapp/javascripts/application.js9
-rwxr-xr-xsonar-server/src/main/webapp/stylesheets/jquery-ui.css6
-rw-r--r--sonar-server/src/main/webapp/stylesheets/layout.css4
-rw-r--r--sonar-server/src/main/webapp/stylesheets/style.css36
8 files changed, 113 insertions, 30 deletions
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb
index 061183c3b84..f4dce0e9777 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb
@@ -298,27 +298,41 @@ class ProfilesController < ApplicationController
end
+ # GET /profiles/rename_form?id=<id>
+ def rename_form
+ @profile = Profile.find(params[:id])
+ render :partial => 'profiles/rename_form'
+ end
#
#
- # POST /profiles/rename/<id>?name=<new name>
+ # POST /profiles/rename?id=<id>&name=<new name>
#
#
def rename
- profile = Profile.find(params[:id])
- name = params['rename_' + profile.id.to_s]
+ render :text => 'Not an ajax request', :status => '400' unless request.xhr?
+
+ @profile = Profile.find(params[:id])
+ name = params[:name]
+ success=false
if name.blank?
- flash[:warning]=message('quality_profiles.profile_name_cant_be_blank')
+ @error=message('quality_profiles.profile_name_cant_be_blank')
else
- existing=Profile.find(:first, :conditions => {:name => name, :language => profile.language, :enabled => true})
+ existing=Profile.find(:first, :conditions => {:name => name, :language => @profile.language, :enabled => true})
if existing
- flash[:warning]=message('quality_profiles.profile_name_already_exists')
- elsif !profile.provided?
- java_facade.renameProfile(profile.id, name)
+ @error=message('quality_profiles.profile_name_already_exists')
+ elsif !@profile.provided?
+ java_facade.renameProfile(@profile.id, name)
+ success=true
end
end
- redirect_to :action => 'index'
+
+ if success
+ render :text => 'ok', :status => 200
+ else
+ render :partial => 'profiles/rename_form', :status => 400
+ end
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_head.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_head.html.erb
index a17ff125ff9..c2f6ada98e3 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_head.html.erb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_head.html.erb
@@ -46,5 +46,5 @@
<%= javascript_include_tag 'resource' %>
<% end %>
<!--[if lte IE 8]><%= javascript_include_tag 'protovis-msie' -%><![endif]-->
-<script>var baseUrl = '<%= ApplicationController.root_context -%>';var $j = jQuery.noConflict();</script>
+<script>var baseUrl = '<%= ApplicationController.root_context -%>';var $j = jQuery.noConflict();<%= yield :javascript_header -%></script>
</head><body> \ No newline at end of file
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_rename_form.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_rename_form.html.erb
new file mode 100644
index 00000000000..f64315285e5
--- /dev/null
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_rename_form.html.erb
@@ -0,0 +1,38 @@
+<h2 class="modal-title" xmlns="http://www.w3.org/1999/html">Rename Profile</h2>
+<form id="form-rename-profile" method="post" action="profiles/rename">
+ <input type="hidden" name="id" value="<%= @profile.id -%>"/>
+
+ <% if @error %>
+ <p class="error"><%= h @error -%></p>
+ <% end %>
+
+ <fieldset>
+ <div class="form-field">
+ <label for="">Old name</label>
+ <input type="text" disabled="disabled" value="<%= h @profile.name -%>"/>
+ </div>
+ <div class="form-field">
+ <label for="name">New name</label>
+ <input id="new-name" name="name" type="text"/>
+ </div>
+ <div class="form-footer">
+ <input type="submit" value="Rename"/>
+ <a href="#" onclick="return closeModalWindow()"><%= message('cancel') -%></a>
+ </div>
+ </fieldset>
+</form>
+<script>
+ $j('#new-name').focus();
+ $j("#form-rename-profile").submit(function (event) {
+ $j('input[type=submit]', this).attr('disabled', 'disabled');
+ $j.ajax({type:"POST", data:$j(this).serialize(), url:$j(this).attr('action'),
+ success:function (data) {
+ location.reload();
+ },
+ error:function (xhr, textStatus, errorThrown) {
+ $j("#modal").html(xhr.responseText);
+ }
+ });
+ return false;
+ });
+</script> \ No newline at end of file
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/index.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/index.html.erb
index 87df20e4c2b..e1e8e3bd93e 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/index.html.erb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/index.html.erb
@@ -130,12 +130,9 @@
</td>
<td align="right">
- <% if !(profile.provided?) %>
- <% form_tag(:action => 'rename', :id => profile.id) do -%>
- <%= hidden_field_tag 'rename_' + profile.id.to_s %>
- <input type="button" name="button_rename" id="rename_<%= u profile.key %>" value="<%= message('rename') -%>" onClick='var name=prompt("<%= message('quality_profiles.new_name') -%>", "<%= profile.name -%>"); if (name!=null) {$("rename_<%= profile.id %>").value=name; submit();} else {return false;}'>
- <% end
- end %>
+ <% if !profile.provided? %>
+ <a id="rename-<%= profile.key.parameterize -%>" href="<%= ApplicationController.root_context -%>/profiles/rename_form?id=<%= profile.id -%>" class="button open-modal"><%= message('rename') -%></a>
+ <% end %>
</td>
<td align="right">
@@ -153,7 +150,6 @@
:method => :post %>
<% end %>
</td>
-
<% end %>
</tr>
<% end %>
@@ -161,3 +157,9 @@
</table>
<br/><br/>
<% end %>
+
+<% content_for :javascript_header do %>
+ $j(document).ready(function () {
+ $j('.open-modal').modal();
+ });
+<% end %>
diff --git a/sonar-server/src/main/webapp/javascripts/application.js b/sonar-server/src/main/webapp/javascripts/application.js
index ffcd14ce03f..5fcbff6a86f 100644
--- a/sonar-server/src/main/webapp/javascripts/application.js
+++ b/sonar-server/src/main/webapp/javascripts/application.js
@@ -284,13 +284,9 @@ Treemap.prototype.onLoaded = function (componentsSize) {
draggable:false,
autoOpen:false,
modal:true,
+ minHeight: 50,
resizable:false,
dialogClass:o.dialogClass,
- open:function (event,ui) {
- $j('.ui-widget-overlay').bind('click', function () {
- $j('#modal').dialog('close');
- })
- },
close: function() {
$j('#modal').remove();
}
@@ -306,8 +302,6 @@ Treemap.prototype.onLoaded = function (componentsSize) {
return false;
});
-
-
});
}
});
@@ -315,4 +309,5 @@ Treemap.prototype.onLoaded = function (componentsSize) {
function closeModalWindow() {
$j('#modal').dialog('close');
+ return false;
} \ No newline at end of file
diff --git a/sonar-server/src/main/webapp/stylesheets/jquery-ui.css b/sonar-server/src/main/webapp/stylesheets/jquery-ui.css
index e17356e0599..2f131a68a02 100755
--- a/sonar-server/src/main/webapp/stylesheets/jquery-ui.css
+++ b/sonar-server/src/main/webapp/stylesheets/jquery-ui.css
@@ -17,14 +17,12 @@
.ui-helper-clearfix { zoom: 1; }
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%;background: none repeat scroll 0 0 rgba(0, 0, 0, 0.5) }
-.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee 50% top repeat-x; color: #333333; }
.ui-widget-content a { color: #333333; }
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
.ui-widget-header a { color: #ffffff; }
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }
-.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);background-color: #FFF}
+.ui-dialog { position: absolute; width: 300px; overflow: hidden; box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);background-color: #FFF}
.ui-dialog .ui-dialog-titlebar { display:none }
-.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } \ No newline at end of file
+.ui-dialog .ui-dialog-content { position: relative; border: 0; background: none; overflow: auto; zoom: 1; } \ No newline at end of file
diff --git a/sonar-server/src/main/webapp/stylesheets/layout.css b/sonar-server/src/main/webapp/stylesheets/layout.css
index 7dd4a87c418..b6410c2ba6d 100644
--- a/sonar-server/src/main/webapp/stylesheets/layout.css
+++ b/sonar-server/src/main/webapp/stylesheets/layout.css
@@ -250,3 +250,7 @@ body, a {
.nolayout {
padding: 10px;
}
+
+#modal {
+ display: none;
+} \ No newline at end of file
diff --git a/sonar-server/src/main/webapp/stylesheets/style.css b/sonar-server/src/main/webapp/stylesheets/style.css
index 7b6ab514660..fa9cf6cb609 100644
--- a/sonar-server/src/main/webapp/stylesheets/style.css
+++ b/sonar-server/src/main/webapp/stylesheets/style.css
@@ -1,6 +1,5 @@
/* CSS optimized by http://www.cleancss.com */
-
/* ------------------- PROJECTS SEARCH FORM ------------------- */
#projectSearch {
color: #444;
@@ -19,6 +18,7 @@
padding: 4px 0;
margin-top: 10px;
}
+
.ie6-warn {
color: #EEE;
background: #FF5252;
@@ -975,6 +975,7 @@ table.reviewDetails td img {
.discussionComment li {
list-style: square inside;
}
+
.discussionComment pre {
padding: 10px;
border: 1px dashed #DDD;
@@ -2274,13 +2275,13 @@ td.spacer-top {
padding: 4px 5px;
vertical-align: top;
}
+
.table > tfoot > tr > td {
font-size: 93%;
color: #777;
padding: 4px 5px;
}
-
.table-bordered > tbody {
border-left: 1px solid #DDD;
border-right: 1px solid #DDD;
@@ -2345,3 +2346,34 @@ select.medium-width {
#dependencies .colbody > div > img {
//vertical-align: baseline;
}
+
+.modal-title {
+ border-bottom: 1px solid #ccc;
+ padding: 0.5em;
+ background-color: #EFEFEF;
+}
+.form-field {
+ padding: 5px;
+}
+.form-field label:before {
+ content: "";
+}
+.form-field label {
+ display: block;
+ text-align: right;
+ width: 120px;
+ float: left;
+ line-height: 1;
+ padding: 5px 5px 0 0;
+}
+.form-footer {
+ text-align: right;
+ padding: 0.5em;
+ border-top: 1px solid #CCC;
+}
+.form-footer input {
+ margin-right: 10px;
+}
+input[type=text] {
+ height: 20px;
+}