mirror of
				https://github.com/gitbucket/gitbucket.git
				synced 2025-10-31 18:46:28 +01:00 
			
		
		
		
	Implementing label management.
This commit is contained in:
		| @@ -13,8 +13,8 @@ trait LabelsControllerBase extends ControllerBase { | ||||
|   case class LabelForm(labelName: String, color: String) | ||||
|  | ||||
|   val labelForm = mapping( | ||||
|     "labelName" -> trim(label("Label name", text(required, maxlength(100)))), | ||||
|     "color"     -> trim(label("Color",      text(required, maxlength(7)))) | ||||
|     "newLabelName" -> trim(label("Label name", text(required, maxlength(100)))), | ||||
|     "newColor"     -> trim(label("Color",      text(required, maxlength(7)))) | ||||
|   )(LabelForm.apply) | ||||
|  | ||||
|   post("/:owner/:repository/issues/label/new", labelForm)(writableRepository { form => | ||||
|   | ||||
| @@ -15,7 +15,7 @@ | ||||
|       No milestone selected | ||||
|       <hr/> | ||||
|       <strong>Labels</strong> | ||||
|       <ul class="label-list nav nav-pills nav-stacked"> | ||||
|       <ul id="label-list" class="label-list nav nav-pills nav-stacked"> | ||||
|         @labels.map { label => | ||||
|           <li> | ||||
|             <a href="#"> | ||||
| @@ -26,20 +26,35 @@ | ||||
|           </li> | ||||
|         } | ||||
|       </ul> | ||||
|       <ul id="label-edit" class="label-list nav nav-pills nav-stacked" style="display: none;"> | ||||
|         @labels.map { label => | ||||
|         <li style="border: 1px solid white;"> | ||||
|           <a href="javascript:void(0);" class="label-edit-link" labelId="@label.labelId" labelName="@label.labelName" color="#@label.color"> | ||||
|             <span class="count-right"><i class="icon-remove-circle" onclick="alert('delete!');"></i></span> | ||||
|             <span style="background-color: #@label.color;" class="label-color">  </span> | ||||
|             @label.labelName | ||||
|           </a> | ||||
|         </li> | ||||
|         } | ||||
|         @* | ||||
|         <form id="editLabelForm" style="display: none; margin-bottom: 8px;"> | ||||
|           <span id="error-editLabelName" class="error"></span> | ||||
|           <input type="text" name="editLabelName" id="editLabelName" value="" style="width: 180px; margin-left: 8px; margin-bottom: 0px;"/> | ||||
|           <span id="error-editColor" class="error"></span> | ||||
|           <div class="input-append color bscp" data-color="#888888" data-color-format="hex" id="editColor" style="width: 180px; margin-bottom: 0px;"> | ||||
|             <input type="text" class="span3" name="editColor" value="" readonly style="width: 168px; margin-left: 8px;"/> | ||||
|             <span class="add-on"><i style="background-color: #888888;"></i></span> | ||||
|           </div> | ||||
|           <input type="hidden" name="editLabelId"/> | ||||
|           <input type="submit" class="btn label-submit" value="Save" style="margin-left: 8px; margin-bottom: 0px;"/> | ||||
|         </form> | ||||
|         *@ | ||||
|       </ul> | ||||
|       <hr/> | ||||
|       <a class="btn btn-block" href="#">Manage Labels</a> | ||||
|       <input type="button" class="btn btn-block" id="manageLabel" data-toggle="button" value="Manage Labels"/> | ||||
|       <br/> | ||||
|       <strong>New label</strong> | ||||
|       <form method="POST" action="@path/@repository.owner/@repository.name/issues/label/new" validate="true"> | ||||
|         <span id="error-labelName" class="error"></span> | ||||
|         <input type="text" name="labelName" value="" placeholder="New label name"/> | ||||
|         <span id="error-color" class="error"></span> | ||||
|         <div class="input-append color bscp" data-color="#888888" data-color-format="hex" id="cp3"> | ||||
|           <input type="text" class="span3" name="color" value="" readonly style="width: 100%;"> | ||||
|           <span class="add-on"><i style="background-color: #888888;"></i></span> | ||||
|         </div> | ||||
|         <input type="submit" class="btn" value="Create"/> | ||||
|       </form> | ||||
|       @labeledit(None, repository) | ||||
|     </div> | ||||
|     <div class="span9"> | ||||
|       <div class="pagination pull-right"> | ||||
| @@ -87,7 +102,53 @@ | ||||
| } | ||||
| <script> | ||||
| $(function(){ | ||||
|   $('#cp3').colorpicker(); | ||||
|   $('#editColor').colorpicker(); | ||||
|  | ||||
|   $('#manageLabel').click(function(){ | ||||
|     if($(this).data('toggle-state')){ | ||||
|       location.href = '@path/@repository.owner/@repository.name/issues'; | ||||
|     } else { | ||||
|       $(this).data('toggle-state', 'on'); | ||||
|       $('#label-list').hide(); | ||||
|       $('#label-edit').show(); | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   $('a.label-edit-link').click(function(e){ | ||||
|     e.stopPropagation(); | ||||
|     if($('input[name=editLabelId]').val() != $(this).attr('labelId')){ | ||||
|       showEditLabelForm(this); | ||||
|     } else { | ||||
|       hideEditLabelForm(); | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   $('#editLabelForm').click(function(e){ | ||||
|     e.stopPropagation(); | ||||
|   }); | ||||
|  | ||||
|   $('body').click(function(){ | ||||
|     hideEditLabelForm(); | ||||
|   }); | ||||
|  | ||||
|   function showEditLabelForm(element){ | ||||
|     var form = $('#editLabelForm'); | ||||
|     form.detach(); | ||||
|     form.find('input[name=editLabelName]').val($(element).attr('labelName')); | ||||
|     //form.find('input[name=editColor]').colorpicker('setValue', $(element).attr('color')); | ||||
|     form.find('input[name=editLabelId]').val($(element).attr('labelId')); | ||||
|     $(element).parent().append(form); | ||||
|     form.show(); | ||||
|     $('ul#label-edit li').css('border', '1px solid white'); | ||||
|     $(element).parent().css('border', '1px solid #eee'); | ||||
|   } | ||||
|  | ||||
|   function hideEditLabelForm(){ | ||||
|     var form = $('#editLabelForm'); | ||||
|     form.find('input[name=editLabelId]').val(''); | ||||
|     form.hide(); | ||||
|     $('ul#label-edit li').css('border', '1px solid white'); | ||||
|   } | ||||
| }); | ||||
| </script> | ||||
| <style type="text/css"> | ||||
|   | ||||
							
								
								
									
										31
									
								
								src/main/twirl/issues/labeledit.scala.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/main/twirl/issues/labeledit.scala.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| @(label: Option[model.Label], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context) | ||||
| @import context._ | ||||
| @defining((if(label.isEmpty) ("new", 190, 4) else ("edit", 180, 8))){ case (mode, width, margin) => | ||||
|   <form method="POST" action="@path/@repository.owner/@repository.name/issues/label/@mode" validate="true" @if(mode == "edit"){ style="margin-bottom: 8px;"}> | ||||
|     <span id="error-@(mode)LabelName" class="error"></span> | ||||
|     <input type="text" name="@(mode)LabelName" id="@(mode)LabelName" style="width: @(width)px; margin-left: @(margin)px; margin-bottom: 0px;" value="@label.map(_.labelName)"@if(mode == "new"){ placeholder="New label name"}/> | ||||
|     <div id="@(mode)LabelForm"@if(mode == "new"){ style="display: none;"}> | ||||
|       <span id="error-@(mode)Color" class="error"></span> | ||||
|       <div class="input-append color bscp" data-color="#@label.map(_.color).getOrElse("888888")" data-color-format="hex" id="@(mode)Color" style="width: @(width)px; margin-bottom: 0px;"> | ||||
|         <input type="text" class="span3" name="@(mode)Color" value="@label.map(_.color)" readonly style="width: @(width - 12)px; margin-left: @(margin)px;"> | ||||
|         <span class="add-on"><i style="background-color: #@label.map(_.color).getOrElse("888888");"></i></span> | ||||
|       </div> | ||||
|       <input type="submit" class="btn" style="margin-left: @(margin)px; margin-bottom: 0px;" value="@if(mode == "new"){Create} else {Save}"/> | ||||
|     </div> | ||||
|   </form> | ||||
|   <script> | ||||
|   @if(mode == "new"){ | ||||
|     $(function(){ | ||||
|       $('#newColor').colorpicker(); | ||||
|  | ||||
|       $('#newLabelName').focus(function(){ | ||||
|         if($('#newLabelForm').css('display') == 'none'){ | ||||
|           $('#newLabelForm').show(); | ||||
|         } | ||||
|       }); | ||||
|     }); | ||||
|   } else { | ||||
|     $('#editColor').colorpicker(); | ||||
|   } | ||||
|   </script> | ||||
| } | ||||
		Reference in New Issue
	
	Block a user