1
0
mirror of https://github.com/projekteuler/projekteuler.git synced 2025-12-10 08:46:41 +01:00

Improve translation creation form by using codemirror

This commit is contained in:
Philipp Fischbeck 2015-02-08 17:30:06 +01:00
parent a127fbcf15
commit 5c1709ba7e
9 changed files with 80 additions and 5 deletions

View File

@ -41,6 +41,7 @@ gem 'mathjax-rails'
gem 'devise', '~> 3.4.1'
gem 'devise-bootstrap-views'
gem 'codemirror-rails'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

View File

@ -48,6 +48,8 @@ GEM
bootstrap-sass (3.3.1.0)
sass (~> 3.2)
builder (3.2.2)
codemirror-rails (4.8)
railties (>= 3.0, < 5)
coffee-rails (4.1.0)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.0)
@ -190,6 +192,7 @@ DEPENDENCIES
autoprefixer-rails
bh (~> 1.2)
bootstrap-sass (~> 3.3.1)
codemirror-rails
coffee-rails (~> 4.1.0)
coveralls (~> 0.7.2)
devise (~> 3.4.1)

View File

@ -14,4 +14,11 @@
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require codemirror
//= require codemirror/addons/display/placeholder
//= require codemirror/modes/xml
//= require codemirror/modes/css
//= require codemirror/modes/javascript
//= require codemirror/modes/htmlmixed
//= require translations
//= require_tree .

View File

@ -1,3 +1,20 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
cm = null
loadCodeMirror = ->
$('#translationNav li:first').addClass('active')
$("textarea").each ->
cm = CodeMirror.fromTextArea($(this).get(0), {
lineNumbers: false,
lineWrapping: true,
mode: "text/html"
})
$(document).ready loadCodeMirror
$(document).on "page:load", loadCodeMirror
$(document).on "click", '#translationNav a[href="#preview"]', ->
$('#preview .problem-content').html(cm.getValue())

View File

@ -12,6 +12,7 @@
*
*= require_tree .
*= require devise_bootstrap_views
*= require codemirror
*= require_self
*/

View File

@ -1,3 +1,35 @@
// Place all the styles related to the Translations controller here.
// They will automatically be included in application.css.scss.
// You can use Sass (SCSS) here: http://sass-lang.com/
.CodeMirror {
/* Bootstrap Settings */
box-sizing: border-box;
margin: 0;
font: inherit;
display: block;
width: 100%;
padding: 6px 12px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
background: #fff none;
border: 1px solid #ccc;
border-radius: 4px;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
/* Code Mirror Settings */
font-family: monospace;
position: relative;
overflow: hidden;
}
.CodeMirror-focused {
/* Bootstrap Settings */
border-color: #66afe9;
outline: 0;
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.CodeMirror-empty pre.CodeMirror-placeholder { color: #999; }

View File

@ -1,5 +1,17 @@
<%= form_for [@problem, @translation], layout: :basic do |f| %>
<%= f.text_field :title %>
<%= f.text_area :content %>
<%= f.submit %>
<%= f.text_field :title %>
<%= nav id: 'translationNav' do %>
<%= link_to t('.source_code'), '#source', data: {toggle: 'tab'} %>
<%= link_to t('.preview'), '#preview', data: {toggle: 'tab'} %>
<% end %>
<div class="tab-content">
<div class="tab-pane active" id="source">
<%= f.text_area :content, placeholder: t('.translation_source_explanation') %>
</div>
<%= panel class: 'tab-pane', id: 'preview' do %>
<div class="panel-body problem-content">
</div>
<% end %>
</div>
<%= f.submit %>
<% end %>

View File

@ -1,5 +1,3 @@
<h1><%= t '.new_translation', id: @problem.id %></h1>
<%= render 'form' %>
<%= link_to t('.back'), :back, class: 'btn btn-default' %>

View File

@ -2,6 +2,10 @@
de:
translations:
form:
preview: Vorschau
source_code: Quelltext
translation_source_explanation: Hier kommt der HTML-Quelltext der Übersetzung hin.
new:
back: Zurück
new_translation: Neue Übersetzung für Problem %{id}