chem-redmine

I’m still playing with redmine.
I want to embed structure editor in redmine, and store structural information.
It’s good idea to make plugin, but it’s difficult to do ASAP.
So, I embedded javascript directory in base code.
At first, put javascript library JSME in $REDMINE_ROOT/public/javascripts/.
JSME can get from following site. http://peter-ertl.com/jsme/
Then added javascript and some html code.
Base code was $REDMINE_ROOT/app/views/issues/_form.html.erb
Before embed code, I make custom_field named smiles as text, that store smilestrings and set trucker Task.
OK let’s start.

yesterday, my code has bug.
I have mistake that form tag nested.
So I fixed the bug.
( remove tag )

<!-- added script -->
<%= javascript_include_tag "/javascripts/JSME/jsme/jsme.nocache.js" %>
<!-- added script -->

<%= labelled_fields_for :issue, @issue do |f| %>
<%= call_hook(:view_issues_form_details_top, { :issue => @issue, :form => f }) %>

<% if @issue.safe_attribute? 'is_private' %>
<p style="float:right; margin-right:1em;">
  <%= f.check_box :is_private, :no_label => true %><label class="inline" for="issue_is_private" id="issue_is_private_label"><%= l(:field_is_private) %></label>
</p>
<% end %>

<% if @issue.safe_attribute? 'project_id' %>
<p><%= f.select :project_id, project_tree_options_for_select(@issue.allowed_target_projects, :selected => @issue.project), {:required => true},
                :onchange => "updateIssueFrom('#{escape_javascript project_issue_form_path(@project, :id => @issue, :format => 'js')}')" %></p>
<% end %>

<% if @issue.safe_attribute? 'tracker_id' %>
<p><%= f.select :tracker_id, @issue.project.trackers.collect {|t| [t.name, t.id]}, {:required => true},
                :onchange => "updateIssueFrom('#{escape_javascript project_issue_form_path(@project, :id => @issue, :format => 'js')}')" %></p>
<% end %>

<% if @issue.safe_attribute? 'subject' %>
<p><%= f.text_field :subject, :size => 80, :maxlength => 255, :required => true %></p>
<% end %>

<% if @issue.safe_attribute? 'description' %>
<p>
  <%= f.label_for_field :description, :required => @issue.required_attribute?('description') %>
  <%= link_to_function image_tag('edit.png'), '$(this).hide(); $("#issue_description_and_toolbar").show()' unless @issue.new_record? %>
  <%= content_tag 'span', :id => "issue_description_and_toolbar", :style => (@issue.new_record? ? nil : 'display:none') do %>
    <%= f.text_area :description,
                   :cols => 60,
                   :rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min),
                   :accesskey => accesskey(:edit),
                   :class => 'wiki-edit',
                   :no_label => true %>
  <% end %>

<%= call_hook(:view_issues_form_details_bottom, { :issue => @issue, :form => f }) %>
<% end %>

<!-- added script from here-->
<div name='chem_editor'>
<table border=0 width=''100%'>
<tr>
<td align=''center'>
<div code='JME.class' name='JME' archive='JME.jar' width=360 height=315>
</div>
</td>
<td>
<input type='button' value='GET SMILES' onClick='getSmiles()'>
</td>
</tr>
</table>
</div>
<p>test</p>
<!-- end -->

</p>
<%= wikitoolbar_for 'issue_description' %>
<% end %>

<div id="attributes" class="attributes">
  <%= render :partial => 'issues/attributes' %>
</div>
// this function get smiles from JME object and fill smile strings to custom_field.
<script language='javascript'>
function getSmiles(){
  var drawing = document.all.JME.smiles();
  document.all.issue_custom_field_values_1.value = drawing;
};
</script>


<% heads_for_wiki_formatter %>
<%= javascript_tag do %>
$(document).ready(function(){
  $("#issue_tracker_id, #issue_status_id").each(function(){
    $(this).val($(this).find("option[selected=selected]").val());
  });
});
<% end %>

Then restart server and click new ticket.
Then you can see…
Screen Shot 2015-02-02 at 11.16.28 PM
And push get smiles…
Screen Shot 2015-02-02 at 11.16.41 PM
Custom_field filled smiles ;-).
push submit button, smiles will be stored database.
There are no flexibility about this method, I’m studying about ruby, and redmine-plugins. So, I want to make more flexible code…
If anyone who has good advice or suggestion, please post comment here ;-).

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中