diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index f2fa522cd..de8e3b4b3 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -1,308 +1,395 @@ -<% if User.current.id == @user.id%> - - <%#= show_activity @state%> -
+ + + <%#= show_activity @state%> +
- <%= form_tag(:controller => 'users', :action => "show") do %> - - <% end %> + <%= form_tag(:controller => 'users', :action => "show") do %> + + <% end %> <% end %> -<% unless @state == 2%> - <% unless @activity.empty? %> -
- <% @activity.each do |e| %> - <%# 以下一行代码解决有未知的活动无法转换成Model报错%> - <% (Rails.logger.error "[Error] =========================================================> NameError: uninitialized constant " + e.act_type.to_s; next; ) if e.act_type.safe_constantize.nil? %> - <% act = e.act %> - <% unless act.nil? %> - - - - + +
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> - -<% case e.act_type %> -<% when 'JournalsForMessage' %> - <% if User.current.login == e.user.try(:login) %> - <%# if e.user_id == act.jour.id %> - - <%# else %> - - <%# end %> - <% else %> - - <% end %> - - + + + <% when 'Bid' %> + + <% if act.reward_type ==3 %> + <% if e.user == User.current %> + + <% else %> + + <% end %> + <% else %> + <% if e.user == User.current %> + + <% else %> + + <% end %> + <% end %> + + + + + + + + <% when 'Journal' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'Changeset' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'Message' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'Principal' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'News' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'Issue' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'Contest' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + <% else %> + <% f=1 %> + <% end %> +
<%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_have_feedback) %> - <%= link_to("#{e.act.user.name}", user_path(e.act.user.id)) %><%= l(:label_of_feedback) + l(:label_layouts_feedback) %>
<%= link_to("#{e.user.name}", user_path(e.user_id)) %> <%= l(:label_have_feedback) %><%= - link_to("#{e.act.user.name}", user_path(e.act.user.id)) %><%= l(:label_of_feedback) + l(:label_layouts_feedback) %>

<%= textilizable act.notes %>

-
<%= link_to(l(:label_goto), user_newfeedback_user_path(e.user_id)) %> +<% unless @state == 2 %> + <% unless @activity.empty? %> +
+ <% @activity.each do |e| %> + <%# 以下一行代码解决有未知的活动无法转换成Model报错%> + <% (Rails.logger.error "[Error] =========================================================> NameError: uninitialized constant " + e.act_type.to_s; next;) if e.act_type.safe_constantize.nil? %> + <% act = e.act %> + <% unless act.nil? %> + + + + - -
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> + + <% case e.act_type %> + <% when 'JournalsForMessage' %> + <% if User.current.login == e.user.try(:login) %> + <%# if e.user_id == act.jour.id %> + + + + <%# else %> + + <%# end %> + <% else %> + + + + <% end %> + + - + + - - - -<% when 'Bid' %> - - <% if act.reward_type ==3 %> - <% if e.user == User.current%> - - <% else %> - - <% end %> - <% else %> - <% if e.user == User.current%> - - <% else %> - - <% end %> - <% end %> - - - - - -<% when 'Journal' %> - - <% if e.user == User.current%> - - <% else %> - - <% end %> - - - - - -<% when 'Changeset' %> - - <% if e.user == User.current%> - - <% else %> - - <% end %> - - - - - -<% when 'Message' %> - - <% if e.user == User.current%> - - <% else %> - - <% end %> - - - - - -<% when 'Principal' %> - - <% if e.user == User.current%> - - <% else %> - - <% end %> - - - - - -<% when 'News' %> - - <% if e.user == User.current%> - - <% else %> - - <% end %> - - - - - -<% when 'Issue' %> - - <% if e.user == User.current%> - - <% else %> - - <% end %> - - - - - -<% when 'Contest' %> - - <% if e.user == User.current%> - - <% else %> - - <% end %> - - - - -<% else %> - <% f=1 %> -<% end %> -
+ <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_have_feedback) %> + <%= link_to("#{e.act.user.name}", user_path(e.act.user.id)) %><%= l(:label_of_feedback) + l(:label_layouts_feedback) %> +
+ <%= link_to("#{e.user.name}", user_path(e.user_id)) %> <%= l(:label_have_feedback) %><%= + link_to("#{e.act.user.name}", user_path(e.act.user.id)) %><%= l(:label_of_feedback) + l(:label_layouts_feedback) %> +
+

<%= textilizable act.notes %>

+ +
<%= link_to(l(:label_goto), user_newfeedback_user_path(e.user_id)) %>
-
-
- <%=(l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
-
<%= link_to("#{l(:label_i)}", user_path(e.user_id)) %><%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{l(:label_active_homework)}##{act.id}:#{act.name}"), respond_path(e.act_id) %><%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %>  <%= link_to format_activity_title("#{l(:label_active_homework)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %><%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{l(:label_active_call)}##{act.id}:#{act.name}"), respond_path(e.act_id) %><%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %>  <%= link_to format_activity_title("#{l(:label_active_call)}##{act.id}:#{act.name}"), respond_path(e.act_id) %>

<%= act.description.html_safe %>

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
<%= link_to l(:label_find_all_comments), respond_path(e.act_id) %><%= l(:label_comments_count, :count => e.act.commit)%>
-
<%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.identifier))%> <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %><%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to( l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.identifier))%> <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %>

<%= act.notes.html_safe %>

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
-
<%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title(act.title), {:controller => 'repositories', :action => 'revision', :id => act.repository.project, :repository_id => act.repository.identifier_param, :rev => act.identifier} %><%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title(act.title), {:controller => 'repositories', :action => 'revision', :id => act.repository.project, :repository_id => act.repository.identifier_param, :rev => act.identifier} %>

<%= act.long_comments.html_safe %>

-
- <%= format_time(e.act.committed_on) %> -
-
<%= link_to l(:label_find_all_comments), {:controller => 'repositories', :action => 'revision', :id => act.repository.project, :repository_id => act.repository.identifier_param, :rev => act.identifier} %><%= l(:label_comments_count, :count => e.act.count)%>
-
<%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"), {:controller => 'messages', :action => 'show', :board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}) %><%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"), {:controller => 'messages', :action => 'show', :board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}) %>

<%= h act.content.truncate(240, omission: '...') %>

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
-
<%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_new_user) %><%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_user) %>

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
-
<%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %><%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %>

<%= act.description.html_safe %>

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
<%= link_to l(:label_find_all_comments), {:controller => 'news', :action => 'show', :id => act.id} %><%= l(:label_comments_count, :count => e.act.comments_count)%>
<%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{act.source_from} (#{act.status}): #{act.tracker.name} #{act.subject}"), {:controller => 'issues', :action => 'show', :id => act.id} %><%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title("#{act.source_from} (#{act.status}): #{act.tracker.name} #{act.subject}"), {:controller => 'issues', :action => 'show', :id => act.id} %>

<%= textilizable(act.description) %>

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
<%= link_to l(:label_find_all_comments), {:controller => 'issues', :action => 'show', :id => act.id} %><%= l(:label_comments_count, :count => e.act.journals.count)%>
-
<%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %><%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %>

<%= h act.description %>

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
-
- <% end %> +
+
+ <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> +
+
+
+ <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %><%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{l(:label_active_homework)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> + + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %>  <%= link_to format_activity_title("#{l(:label_active_homework)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> + + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %><%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{l(:label_active_call)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> + + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %>  <%= link_to format_activity_title("#{l(:label_active_call)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> +
+

<%= act.description.html_safe %>

+
+ <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> +
+
+ <%= link_to l(:label_find_all_comments), respond_path(e.act_id) %><%= l(:label_comments_count, :count => e.act.commit) %> +
+
+ <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.identifier)) %> <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %> + + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.identifier)) %> <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %> +

<%= act.notes.html_safe %>

+
+
+ <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> +
+
+
+ <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title(act.title), {:controller => 'repositories', :action => 'revision', :id => act.repository.project, :repository_id => act.repository.identifier_param, :rev => act.identifier} %> + + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title(act.title), {:controller => 'repositories', :action => 'revision', :id => act.repository.project, :repository_id => act.repository.identifier_param, :rev => act.identifier} %> +
+

<%= act.long_comments.html_safe %>

+
+ <%= format_time(e.act.committed_on) %> +
+
+ <%= link_to l(:label_find_all_comments), {:controller => 'repositories', :action => 'revision', :id => act.repository.project, :repository_id => act.repository.identifier_param, :rev => act.identifier} %><%= l(:label_comments_count, :count => e.act.count) %> +
+
+ <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"), {:controller => 'messages', :action => 'show', :board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}) %> + + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"), {:controller => 'messages', :action => 'show', :board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}) %> +
+

<%= h act.content.truncate(240, omission: '...') %>

+
+
+ <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> +
+
+
+ <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_new_user) %> + + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_user) %> +

+
+ <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> +
+
+
+ <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %> + + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %> +
+

<%= act.description.html_safe %>

+
+ <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> +
+
+ <%= link_to l(:label_find_all_comments), {:controller => 'news', :action => 'show', :id => act.id} %><%= l(:label_comments_count, :count => e.act.comments_count) %> +
+
+ <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{act.source_from} (#{act.status}): #{act.tracker.name} #{act.subject}"), {:controller => 'issues', :action => 'show', :id => act.id} %> + + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title("#{act.source_from} (#{act.status}): #{act.tracker.name} #{act.subject}"), {:controller => 'issues', :action => 'show', :id => act.id} %> +
+

<%= textilizable(act.description) %>

+
+ <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> +
+
+ <%= link_to l(:label_find_all_comments), {:controller => 'issues', :action => 'show', :id => act.id} %><%= l(:label_comments_count, :count => e.act.journals.count) %> +
+
+ <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %> + + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %> +

<%= h act.description %>

+
+
+ <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> +
+
+
+ <% end %> - <% end %> -
- - <% else %> - <% if @user == User.current %> - <%= l(:label_user_activities) %> - <% else %> -

- <%= l(:label_user_activities_other) %> -

- <% end %> - <% end %> + <% end %> + + + <% else %> + <% if @user == User.current %> + <%= l(:label_user_activities) %> + <% else %> +

+ <%= l(:label_user_activities_other) %> +

+ <% end %> + <% end %> <% else %> - <% unless @message.empty? %> -
- <% @message.each do |e| -%> - - - - + +
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> - - - + + + + + + + + +
<%= link_to(h(e.user), user_path(e.user)) %> - <% if e.instance_of?(JournalsForMessage)%> - <% if e.reply_id == User.current.id%> - <%if e.jour_type == 'Bid'%> - <%= l(:label_in_bids)%><%= link_to(e.jour.name, respond_path(e.jour))%> <%= l(:label_quote_my_words) %> + <% unless @message.empty? %> +
+ <% @message.each do |e| -%> + + + + - -
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> + + + - - - - - - - - -
+ <%= link_to(h(e.user), user_path(e.user)) %> + <% if e.instance_of?(JournalsForMessage) %> + <% if e.reply_id == User.current.id %> + <% if e.jour_type == 'Bid' %> + <%= l(:label_in_bids) %><%= link_to(e.jour.name, respond_path(e.jour)) %> <%= l(:label_quote_my_words) %> <% elsif e.jour_type == 'User' %> - <%= l(:label_in_users)%><%= link_to(e.jour.firstname, feedback_path(e.jour))%> <%= l(:label_quote_my_words) %> + <%= l(:label_in_users) %><%= link_to(e.jour.firstname, feedback_path(e.jour)) %> <%= l(:label_quote_my_words) %> <% elsif e.jour_type == 'Project' %> - <%= '在'<<%= link_to(e.jour.name, feedback_path(e.jour))%> <%= l(:label_reply_plural) %> + <%= '在'<<%= link_to(e.jour.name, feedback_path(e.jour)) %> <%= l(:label_reply_plural) %> <% end %> <% else %> - <%= l(:label_about_requirement) %><%= link_to(e.jour.name, respond_path(e.jour_id))%> <%= l(:label_have_respond) %> + <%= l(:label_about_requirement) %><%= link_to(e.jour.name, respond_path(e.jour_id)) %> <%= l(:label_have_respond) %> <% end %> <% else %> <% if e.journal_reply.nil? || e.journal_reply.reply_id != User.current.id %> - <%= l(:label_about_issue) %><%= link_to(e.issue.subject, issue_path(e.journalized_id))%><%= l(:label_have_respond) %> + <%= l(:label_about_issue) %><%= link_to(e.issue.subject, issue_path(e.journalized_id)) %><%= l(:label_have_respond) %> <% else %> - <%= l(:label_in_issues)%><%= link_to(e.issue.subject, issue_path(e.issue))%><%= l(:label_quote_my_words) %> + <%= l(:label_in_issues) %><%= link_to(e.issue.subject, issue_path(e.issue)) %><%= l(:label_quote_my_words) %> <% end %> <% end %> -

<%= textilizable e.notes %>

<%= format_time e.created_on %>
-
- <% end %> -
+

<%= textilizable e.notes %>

+ <%= format_time e.created_on %>
+
+ <% end %> +
- + - <% else %> -

<%= l(:label_no_user_respond_you) %>

- <% end %> + <% else %> +

<%= l(:label_no_user_respond_you) %>

+ <% end %> <% end %> \ No newline at end of file diff --git a/plugins/redmine_ckeditor/assets/ckeditor/plugins/iframe/dialogs/iframe.js b/plugins/redmine_ckeditor/assets/ckeditor/plugins/iframe/dialogs/iframe.js index dba1e9306..ebda240da 100644 --- a/plugins/redmine_ckeditor/assets/ckeditor/plugins/iframe/dialogs/iframe.js +++ b/plugins/redmine_ckeditor/assets/ckeditor/plugins/iframe/dialogs/iframe.js @@ -1,10 +1,75 @@ /* Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){function c(b){var c=this instanceof CKEDITOR.ui.dialog.checkbox;b.hasAttribute(this.id)&&(b=b.getAttribute(this.id),c?this.setValue(e[this.id]["true"]==b.toLowerCase()):this.setValue(b))}function d(b){var c=""===this.getValue(),a=this instanceof CKEDITOR.ui.dialog.checkbox,d=this.getValue();c?b.removeAttribute(this.att||this.id):a?b.setAttribute(this.id,e[this.id][d]):b.setAttribute(this.att||this.id,d)}var e={scrolling:{"true":"yes","false":"no"},frameborder:{"true":"1","false":"0"}}; -CKEDITOR.dialog.add("iframe",function(b){var f=b.lang.iframe,a=b.lang.common,e=b.plugins.dialogadvtab;return{title:f.title,minWidth:350,minHeight:260,onShow:function(){this.fakeImage=this.iframeNode=null;var a=this.getSelectedElement();a&&(a.data("cke-real-element-type")&&"iframe"==a.data("cke-real-element-type"))&&(this.fakeImage=a,this.iframeNode=a=b.restoreRealElement(a),this.setupContent(a))},onOk:function(){var a;a=this.fakeImage?this.iframeNode:new CKEDITOR.dom.element("iframe");var c={},d= -{};this.commitContent(a,c,d);a=b.createFakeElement(a,"cke_iframe","iframe",!0);a.setAttributes(d);a.setStyles(c);this.fakeImage?(a.replace(this.fakeImage),b.getSelection().selectElement(a)):b.insertElement(a)},contents:[{id:"info",label:a.generalTab,accessKey:"I",elements:[{type:"vbox",padding:0,children:[{id:"src",type:"text",label:a.url,required:!0,validate:CKEDITOR.dialog.validate.notEmpty(f.noUrl),setup:c,commit:d}]},{type:"hbox",children:[{id:"width",type:"text",requiredContent:"iframe[width]", -style:"width:100%",labelLayout:"vertical",label:a.width,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.width)),setup:c,commit:d},{id:"height",type:"text",requiredContent:"iframe[height]",style:"width:100%",labelLayout:"vertical",label:a.height,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.height)),setup:c,commit:d},{id:"align",type:"select",requiredContent:"iframe[align]","default":"",items:[[a.notSet,""],[a.alignLeft,"left"],[a.alignRight, -"right"],[a.alignTop,"top"],[a.alignMiddle,"middle"],[a.alignBottom,"bottom"]],style:"width:100%",labelLayout:"vertical",label:a.align,setup:function(a,b){c.apply(this,arguments);if(b){var d=b.getAttribute("align");this.setValue(d&&d.toLowerCase()||"")}},commit:function(a,b,c){d.apply(this,arguments);this.getValue()&&(c.align=this.getValue())}}]},{type:"hbox",widths:["50%","50%"],children:[{id:"scrolling",type:"checkbox",requiredContent:"iframe[scrolling]",label:f.scrolling,setup:c,commit:d},{id:"frameborder", -type:"checkbox",requiredContent:"iframe[frameborder]",label:f.border,setup:c,commit:d}]},{type:"hbox",widths:["50%","50%"],children:[{id:"name",type:"text",requiredContent:"iframe[name]",label:a.name,setup:c,commit:d},{id:"title",type:"text",requiredContent:"iframe[title]",label:a.advisoryTitle,setup:c,commit:d}]},{id:"longdesc",type:"text",requiredContent:"iframe[longdesc]",label:a.longDescr,setup:c,commit:d}]},e&&e.createAdvancedTab(b,{id:1,classes:1,styles:1},"iframe")]}})})(); \ No newline at end of file + */ +(function () { + function c(b) { + var c = this instanceof CKEDITOR.ui.dialog.checkbox; + b.hasAttribute(this.id) && (b = b.getAttribute(this.id), c ? this.setValue(e[this.id]["true"] == b.toLowerCase()) : this.setValue(b)) + } + + function d(b) { + var c = "" === this.getValue(), a = this instanceof CKEDITOR.ui.dialog.checkbox, d = this.getValue(); + c ? b.removeAttribute(this.att || this.id) : a ? b.setAttribute(this.id, e[this.id][d]) : b.setAttribute(this.att || this.id, d) + } + + var e = {scrolling: {"true": "yes", "false": "no"}, frameborder: {"true": "1", "false": "0"}}; + CKEDITOR.dialog.add("iframe", function (b) { + var f = b.lang.iframe, a = b.lang.common, e = b.plugins.dialogadvtab; + return{title: f.title, minWidth: 350, minHeight: 260, onShow: function () { + this.fakeImage = this.iframeNode = null; + var a = this.getSelectedElement(); + a && (a.data("cke-real-element-type") && "iframe" == a.data("cke-real-element-type")) && (this.fakeImage = a, this.iframeNode = a = b.restoreRealElement(a), this.setupContent(a)) + }, onOk: function () { + var a; + a = this.fakeImage ? this.iframeNode : new CKEDITOR.dom.element("iframe"); + var c = {}, d = + {}; + this.commitContent(a, c, d); + a = b.createFakeElement(a, "cke_iframe", "iframe", !0); + a.setAttributes(d); + a.setStyles(c); + this.fakeImage ? (a.replace(this.fakeImage), b.getSelection().selectElement(a)) : b.insertElement(a) + }, contents: [ + {id: "info", label: a.generalTab, accessKey: "I", elements: [ + {type: "vbox", padding: 0, children: [ + {id: "src", type: "text", label: a.url, required: !0, validate: CKEDITOR.dialog.validate.notEmpty(f.noUrl), setup: c, commit: d} + ]}, + {type: "hbox", children: [ + {id: "width", type: "text", requiredContent: "iframe[width]", + style: "width:100%", labelLayout: "vertical", label: a.width, validate: CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1", a.width)), setup: c, commit: d}, + {id: "height", type: "text", requiredContent: "iframe[height]", style: "width:100%", labelLayout: "vertical", label: a.height, validate: CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1", a.height)), setup: c, commit: d}, + {id: "align", type: "select", requiredContent: "iframe[align]", "default": "", items: [ + [a.notSet, ""], + [a.alignLeft, "left"], + [a.alignRight, + "right"], + [a.alignTop, "top"], + [a.alignMiddle, "middle"], + [a.alignBottom, "bottom"] + ], style: "width:100%", labelLayout: "vertical", label: a.align, setup: function (a, b) { + c.apply(this, arguments); + if (b) { + var d = b.getAttribute("align"); + this.setValue(d && d.toLowerCase() || "") + } + }, commit: function (a, b, c) { + d.apply(this, arguments); + this.getValue() && (c.align = this.getValue()) + }} + ]}, + {type: "hbox", widths: ["50%", "50%"], children: [ + {id: "scrolling", type: "checkbox", requiredContent: "iframe[scrolling]", label: f.scrolling, setup: c, commit: d}, + {id: "frameborder", + type: "checkbox", requiredContent: "iframe[frameborder]", label: f.border, setup: c, commit: d} + ]}, + {type: "hbox", widths: ["50%", "50%"], children: [ + {id: "name", type: "text", requiredContent: "iframe[name]", label: a.name, setup: c, commit: d}, + {id: "title", type: "text", requiredContent: "iframe[title]", label: a.advisoryTitle, setup: c, commit: d} + ]}, + {id: "longdesc", type: "text", requiredContent: "iframe[longdesc]", label: a.longDescr, setup: c, commit: d} + ]}, + e && e.createAdvancedTab(b, {id: 1, classes: 1, styles: 1}, "iframe") + ]} + }) +})(); \ No newline at end of file diff --git a/plugins/redmine_ckeditor/assets/ckeditor/plugins/image/dialogs/image.js b/plugins/redmine_ckeditor/assets/ckeditor/plugins/image/dialogs/image.js index 953de6967..8b0eb6a3c 100644 --- a/plugins/redmine_ckeditor/assets/ckeditor/plugins/image/dialogs/image.js +++ b/plugins/redmine_ckeditor/assets/ckeditor/plugins/image/dialogs/image.js @@ -1,43 +1,453 @@ /* Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){var r=function(c,j){function r(){var a=arguments,b=this.getContentElement("advanced","txtdlgGenStyle");b&&b.commit.apply(b,a);this.foreach(function(b){b.commit&&"txtdlgGenStyle"!=b.id&&b.commit.apply(b,a)})}function i(a){if(!s){s=1;var b=this.getDialog(),d=b.imageElement;if(d){this.commit(f,d);for(var a=[].concat(a),e=a.length,c,g=0;g'+c.lang.image.lockRatio+''+c.lang.image.resetSize+""}]},{type:"vbox",padding:1,children:[{type:"text",id:"txtBorder",requiredContent:"img{border-width}",width:"60px",label:c.lang.image.border,"default":"",onKeyUp:function(){g(this.getDialog())}, -onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder),setup:function(a,b){if(a==f){var d;d=(d=(d=b.getStyle("border-width"))&&d.match(/^(\d+px)(?: \1 \1 \1)?$/))&&parseInt(d[1],10);isNaN(parseInt(d,10))&&(d=b.getAttribute("border"));this.setValue(d)}},commit:function(a,b,d){var c=parseInt(this.getValue(),10);a==f||4==a?(isNaN(c)?!c&&this.isChanged()&&b.removeStyle("border"):(b.setStyle("border-width",CKEDITOR.tools.cssLength(c)), -b.setStyle("border-style","solid")),!d&&a==f&&b.removeAttribute("border")):8==a&&(b.removeAttribute("border"),b.removeStyle("border-width"),b.removeStyle("border-style"),b.removeStyle("border-color"))}},{type:"text",id:"txtHSpace",requiredContent:"img{margin-left,margin-right}",width:"60px",label:c.lang.image.hSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace), -setup:function(a,b){if(a==f){var d,c;d=b.getStyle("margin-left");c=b.getStyle("margin-right");d=d&&d.match(o);c=c&&c.match(o);d=parseInt(d,10);c=parseInt(c,10);d=d==c&&d;isNaN(parseInt(d,10))&&(d=b.getAttribute("hspace"));this.setValue(d)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle("margin-left"),b.removeStyle("margin-right")):(b.setStyle("margin-left",CKEDITOR.tools.cssLength(e)),b.setStyle("margin-right",CKEDITOR.tools.cssLength(e))), -!c&&a==f&&b.removeAttribute("hspace")):8==a&&(b.removeAttribute("hspace"),b.removeStyle("margin-left"),b.removeStyle("margin-right"))}},{type:"text",id:"txtVSpace",requiredContent:"img{margin-top,margin-bottom}",width:"60px",label:c.lang.image.vSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace),setup:function(a,b){if(a==f){var c,e;c=b.getStyle("margin-top");e= -b.getStyle("margin-bottom");c=c&&c.match(o);e=e&&e.match(o);c=parseInt(c,10);e=parseInt(e,10);c=c==e&&c;isNaN(parseInt(c,10))&&(c=b.getAttribute("vspace"));this.setValue(c)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle("margin-top"),b.removeStyle("margin-bottom")):(b.setStyle("margin-top",CKEDITOR.tools.cssLength(e)),b.setStyle("margin-bottom",CKEDITOR.tools.cssLength(e))),!c&&a==f&&b.removeAttribute("vspace")):8==a&&(b.removeAttribute("vspace"), -b.removeStyle("margin-top"),b.removeStyle("margin-bottom"))}},{id:"cmbAlign",requiredContent:"img{float}",type:"select",widths:["35%","65%"],style:"width:90px",label:c.lang.common.align,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.alignLeft,"left"],[c.lang.common.alignRight,"right"]],onChange:function(){g(this.getDialog());i.call(this,"advanced:txtdlgGenStyle")},setup:function(a,b){if(a==f){var c=b.getStyle("float");switch(c){case "inherit":case "none":c=""}!c&&(c=(b.getAttribute("align")|| -"").toLowerCase());this.setValue(c)}},commit:function(a,b,c){var e=this.getValue();if(a==f||4==a){if(e?b.setStyle("float",e):b.removeStyle("float"),!c&&a==f)switch(e=(b.getAttribute("align")||"").toLowerCase(),e){case "left":case "right":b.removeAttribute("align")}}else 8==a&&b.removeStyle("float")}}]}]},{type:"vbox",height:"250px",children:[{type:"html",id:"htmlPreview",style:"width:95%;",html:"
"+CKEDITOR.tools.htmlEncode(c.lang.common.preview)+'
'+(c.config.image_previewText||"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.")+ -"
"}]}]}]},{id:"Link",requiredContent:"a[href]",label:c.lang.image.linkTab,padding:0,elements:[{id:"txtUrl",type:"text",label:c.lang.common.url,style:"width: 100%","default":"",setup:function(a,b){if(2==a){var c=b.data("cke-saved-href");c||(c=b.getAttribute("href"));this.setValue(c)}},commit:function(a,b){if(2==a&&(this.getValue()||this.isChanged())){var d=decodeURI(this.getValue());b.data("cke-saved-href",d);b.setAttribute("href",d);if(this.getValue()||!c.config.image_removeLinkByEmptyURL)this.getDialog().addLink= -!0}}},{type:"button",id:"browse",filebrowser:{action:"Browse",target:"Link:txtUrl",url:c.config.filebrowserImageBrowseLinkUrl},style:"float:right",hidden:!0,label:c.lang.common.browseServer},{id:"cmbTarget",type:"select",requiredContent:"a[target]",label:c.lang.common.target,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.targetNew,"_blank"],[c.lang.common.targetTop,"_top"],[c.lang.common.targetSelf,"_self"],[c.lang.common.targetParent,"_parent"]],setup:function(a,b){2==a&&this.setValue(b.getAttribute("target")|| -"")},commit:function(a,b){2==a&&(this.getValue()||this.isChanged())&&b.setAttribute("target",this.getValue())}}]},{id:"Upload",hidden:!0,filebrowser:"uploadButton",label:c.lang.image.upload,elements:[{type:"file",id:"upload",label:c.lang.image.btnUpload,style:"height:40px",size:38},{type:"fileButton",id:"uploadButton",filebrowser:"info:txtUrl",label:c.lang.image.btnUpload,"for":["Upload","upload"]}]},{id:"advanced",label:c.lang.common.advancedTab,elements:[{type:"hbox",widths:["50%","25%","25%"], -children:[{type:"text",id:"linkId",requiredContent:"img[id]",label:c.lang.common.id,setup:function(a,b){a==f&&this.setValue(b.getAttribute("id"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("id",this.getValue())}},{id:"cmbLangDir",type:"select",requiredContent:"img[dir]",style:"width : 100px;",label:c.lang.common.langDir,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.langDirLtr,"ltr"],[c.lang.common.langDirRtl,"rtl"]],setup:function(a,b){a==f&&this.setValue(b.getAttribute("dir"))}, -commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("dir",this.getValue())}},{type:"text",id:"txtLangCode",requiredContent:"img[lang]",label:c.lang.common.langCode,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("lang"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("lang",this.getValue())}}]},{type:"text",id:"txtGenLongDescr",requiredContent:"img[longdesc]",label:c.lang.common.longDescr,setup:function(a,b){a==f&&this.setValue(b.getAttribute("longDesc"))}, -commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("longDesc",this.getValue())}},{type:"hbox",widths:["50%","50%"],children:[{type:"text",id:"txtGenClass",requiredContent:"img(cke-xyz)",label:c.lang.common.cssClass,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("class"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("class",this.getValue())}},{type:"text",id:"txtGenTitle",requiredContent:"img[title]",label:c.lang.common.advisoryTitle, -"default":"",onChange:function(){g(this.getDialog())},setup:function(a,b){a==f&&this.setValue(b.getAttribute("title"))},commit:function(a,b){a==f?(this.getValue()||this.isChanged())&&b.setAttribute("title",this.getValue()):4==a?b.setAttribute("title",this.getValue()):8==a&&b.removeAttribute("title")}}]},{type:"text",id:"txtdlgGenStyle",requiredContent:"img{cke-xyz}",label:c.lang.common.cssStyle,validate:CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle),"default":"",setup:function(a, -b){if(a==f){var c=b.getAttribute("style");!c&&b.$.style.cssText&&(c=b.$.style.cssText);this.setValue(c);var e=b.$.style.height,c=b.$.style.width,e=(e?e:"").match(k),c=(c?c:"").match(k);this.attributesInStyle={height:!!e,width:!!c}}},onChange:function(){i.call(this,"info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight".split(" "));g(this)},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("style",this.getValue())}}]}]}}; -CKEDITOR.dialog.add("image",function(c){return r(c,"image")});CKEDITOR.dialog.add("imagebutton",function(c){return r(c,"imagebutton")})})(); \ No newline at end of file + */ +(function () { + var r = function (c, j) { + function r() { + var a = arguments, b = this.getContentElement("advanced", "txtdlgGenStyle"); + b && b.commit.apply(b, a); + this.foreach(function (b) { + b.commit && "txtdlgGenStyle" != b.id && b.commit.apply(b, a) + }) + } + + function i(a) { + if (!s) { + s = 1; + var b = this.getDialog(), d = b.imageElement; + if (d) { + this.commit(f, d); + for (var a = [].concat(a), e = a.length, c, g = 0; g < e; g++)(c = b.getContentElement.apply(b, a[g].split(":"))) && c.setup(f, d) + } + s = 0 + } + } + + var f = 1, k = /^\s*(\d+)((px)|\%)?\s*$/i, v = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i, o = /^\d+px$/, + w = function () { + var a = this.getValue(), b = this.getDialog(), d = a.match(k); + d && ("%" == d[2] && l(b, !1), a = d[1]); + b.lockRatio && (d = b.originalElement, "true" == d.getCustomData("isReady") && ("txtHeight" == this.id ? (a && "0" != a && (a = Math.round(d.$.width * (a / d.$.height))), isNaN(a) || b.setValueOf("info", "txtWidth", a)) : (a && "0" != a && (a = Math.round(d.$.height * (a / d.$.width))), isNaN(a) || b.setValueOf("info", "txtHeight", a)))); + g(b) + }, g = function (a) { + if (!a.originalElement || !a.preview)return 1; + a.commitContent(4, a.preview); + return 0 + }, s, l = function (a, b) { + if (!a.getContentElement("info", "ratioLock"))return null; + var d = a.originalElement; + if (!d)return null; + if ("check" == b) { + if (!a.userlockRatio && "true" == d.getCustomData("isReady")) { + var e = a.getValueOf("info", "txtWidth"), c = a.getValueOf("info", "txtHeight"), d = 1E3 * d.$.width / d.$.height, f = 1E3 * e / c; + a.lockRatio = !1; + !e && !c ? a.lockRatio = !0 : !isNaN(d) && !isNaN(f) && Math.round(d) == Math.round(f) && (a.lockRatio = !0) + } + } else void 0 != b ? a.lockRatio = b : (a.userlockRatio = 1, a.lockRatio = !a.lockRatio); + e = CKEDITOR.document.getById(p); + a.lockRatio ? + e.removeClass("cke_btn_unlocked") : e.addClass("cke_btn_unlocked"); + e.setAttribute("aria-checked", a.lockRatio); + CKEDITOR.env.hc && e.getChild(0).setHtml(a.lockRatio ? CKEDITOR.env.ie ? "■" : "▣" : CKEDITOR.env.ie ? "□" : "▢"); + return a.lockRatio + }, x = function (a) { + var b = a.originalElement; + if ("true" == b.getCustomData("isReady")) { + var d = a.getContentElement("info", "txtWidth"), e = a.getContentElement("info", "txtHeight"); + d && d.setValue(b.$.width); + e && e.setValue(b.$.height) + } + g(a) + }, y = function (a, b) { + function d(a, b) { + var d = a.match(k); + return d ? + ("%" == d[2] && (d[1] += "%", l(e, !1)), d[1]) : b + } + + if (a == f) { + var e = this.getDialog(), c = "", g = "txtWidth" == this.id ? "width" : "height", h = b.getAttribute(g); + h && (c = d(h, c)); + c = d(b.getStyle(g), c); + this.setValue(c) + } + }, t, q = function () { + var a = this.originalElement; + a.setCustomData("isReady", "true"); + a.removeListener("load", q); + a.removeListener("error", h); + a.removeListener("abort", h); + CKEDITOR.document.getById(m).setStyle("display", "none"); + this.dontResetSize || x(this); + this.firstLoad && CKEDITOR.tools.setTimeout(function () { + l(this, "check") + }, + 0, this); + this.dontResetSize = this.firstLoad = !1 + }, h = function () { + var a = this.originalElement; + a.removeListener("load", q); + a.removeListener("error", h); + a.removeListener("abort", h); + a = CKEDITOR.getUrl(CKEDITOR.plugins.get("image").path + "images/noimage.png"); + this.preview && this.preview.setAttribute("src", a); + CKEDITOR.document.getById(m).setStyle("display", "none"); + l(this, !1) + }, n = function (a) { + return CKEDITOR.tools.getNextId() + "_" + a + }, p = n("btnLockSizes"), u = n("btnResetSize"), m = n("ImagePreviewLoader"), A = n("previewLink"), + z = n("previewImage"); + return{title: c.lang.image["image" == j ? "title" : "titleButton"], minWidth: 420, minHeight: 360, onShow: function () { + this.linkEditMode = this.imageEditMode = this.linkElement = this.imageElement = !1; + this.lockRatio = !0; + this.userlockRatio = 0; + this.dontResetSize = !1; + this.firstLoad = !0; + this.addLink = !1; + var a = this.getParentEditor(), b = a.getSelection(), d = (b = b && b.getSelectedElement()) && a.elementPath(b).contains("a", 1); + CKEDITOR.document.getById(m).setStyle("display", "none"); + t = new CKEDITOR.dom.element("img", a.document); + this.preview = CKEDITOR.document.getById(z); + this.originalElement = a.document.createElement("img"); + this.originalElement.setAttribute("alt", ""); + this.originalElement.setCustomData("isReady", "false"); + if (d) { + this.linkElement = d; + this.linkEditMode = !0; + var c = d.getChildren(); + if (1 == c.count()) { + var g = c.getItem(0).getName(); + if ("img" == g || "input" == g)this.imageElement = c.getItem(0), "img" == this.imageElement.getName() ? this.imageEditMode = "img" : "input" == this.imageElement.getName() && (this.imageEditMode = "input") + } + "image" == j && + this.setupContent(2, d) + } + if (this.customImageElement)this.imageEditMode = "img", this.imageElement = this.customImageElement, delete this.customImageElement; else if (b && "img" == b.getName() && !b.data("cke-realelement") || b && "input" == b.getName() && "image" == b.getAttribute("type"))this.imageEditMode = b.getName(), this.imageElement = b; + this.imageEditMode ? (this.cleanImageElement = this.imageElement, this.imageElement = this.cleanImageElement.clone(!0, !0), this.setupContent(f, this.imageElement)) : this.imageElement = a.document.createElement("img"); + l(this, !0); + CKEDITOR.tools.trim(this.getValueOf("info", "txtUrl")) || (this.preview.removeAttribute("src"), this.preview.setStyle("display", "none")) + }, onOk: function () { + if (this.imageEditMode) { + var a = this.imageEditMode; + "image" == j && "input" == a && confirm(c.lang.image.button2Img) ? (this.imageElement = c.document.createElement("img"), this.imageElement.setAttribute("alt", ""), c.insertElement(this.imageElement)) : "image" != j && "img" == a && confirm(c.lang.image.img2Button) ? (this.imageElement = c.document.createElement("input"), + this.imageElement.setAttributes({type: "image", alt: ""}), c.insertElement(this.imageElement)) : (this.imageElement = this.cleanImageElement, delete this.cleanImageElement) + } else"image" == j ? this.imageElement = c.document.createElement("img") : (this.imageElement = c.document.createElement("input"), this.imageElement.setAttribute("type", "image")), this.imageElement.setAttribute("alt", ""); + this.linkEditMode || (this.linkElement = c.document.createElement("a")); + this.commitContent(f, this.imageElement); + this.commitContent(2, this.linkElement); + this.imageElement.getAttribute("style") || this.imageElement.removeAttribute("style"); + this.imageEditMode ? !this.linkEditMode && this.addLink ? (c.insertElement(this.linkElement), this.imageElement.appendTo(this.linkElement)) : this.linkEditMode && !this.addLink && (c.getSelection().selectElement(this.linkElement), c.insertElement(this.imageElement)) : this.addLink ? this.linkEditMode ? c.insertElement(this.imageElement) : (c.insertElement(this.linkElement), this.linkElement.append(this.imageElement, !1)) : c.insertElement(this.imageElement) + }, + onLoad: function () { + "image" != j && this.hidePage("Link"); + var a = this._.element.getDocument(); + this.getContentElement("info", "ratioLock") && (this.addFocusable(a.getById(u), 5), this.addFocusable(a.getById(p), 5)); + this.commitContent = r + }, onHide: function () { + this.preview && this.commitContent(8, this.preview); + this.originalElement && (this.originalElement.removeListener("load", q), this.originalElement.removeListener("error", h), this.originalElement.removeListener("abort", h), this.originalElement.remove(), this.originalElement = !1); + delete this.imageElement + }, contents: [ + {id: "info", label: c.lang.image.infoTab, accessKey: "I", elements: [ + {type: "vbox", padding: 0, children: [ + {type: "hbox", widths: ["280px", "110px"], align: "right", children: [ + {id: "txtUrl", type: "text", label: c.lang.common.url, required: !0, onChange: function () { + var a = this.getDialog(), b = this.getValue(); + if (0 < b.length) { + var a = this.getDialog(), d = a.originalElement; + a.preview.removeStyle("display"); + d.setCustomData("isReady", "false"); + var c = CKEDITOR.document.getById(m); + c && c.setStyle("display", + ""); + d.on("load", q, a); + d.on("error", h, a); + d.on("abort", h, a); + d.setAttribute("src", b); + t.setAttribute("src", b); + a.preview.setAttribute("src", t.$.src); + g(a) + } else a.preview && (a.preview.removeAttribute("src"), a.preview.setStyle("display", "none")) + }, setup: function (a, b) { + if (a == f) { + var d = b.data("cke-saved-src") || b.getAttribute("src"); + this.getDialog().dontResetSize = !0; + this.setValue(d); + this.setInitValue() + } + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) ? (b.data("cke-saved-src", this.getValue()), b.setAttribute("src", + this.getValue())) : 8 == a && (b.setAttribute("src", ""), b.removeAttribute("src")) + }, validate: CKEDITOR.dialog.validate.notEmpty(c.lang.image.urlMissing)}, + {type: "button", id: "browse", style: "display:inline-block;margin-top:10px;", align: "center", label: c.lang.common.browseServer, hidden: !0, filebrowser: "info:txtUrl"} + ]} + ]}, + {id: "txtAlt", type: "text", label: c.lang.image.alt, accessKey: "T", "default": "", onChange: function () { + g(this.getDialog()) + }, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("alt")) + }, commit: function (a, b) { + a == f ? (this.getValue() || this.isChanged()) && b.setAttribute("alt", this.getValue()) : 4 == a ? b.setAttribute("alt", this.getValue()) : 8 == a && b.removeAttribute("alt") + }}, + {type: "hbox", children: [ + {id: "basic", type: "vbox", children: [ + {type: "hbox", requiredContent: "img{width,height}", widths: ["50%", "50%"], children: [ + {type: "vbox", padding: 1, children: [ + {type: "text", width: "45px", id: "txtWidth", label: c.lang.common.width, onKeyUp: w, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: function () { + var a = this.getValue().match(v); + (a = !!(a && 0 !== parseInt(a[1], 10))) || alert(c.lang.common.invalidWidth); + return a + }, setup: y, commit: function (a, b, d) { + var c = this.getValue(); + a == f ? (c ? b.setStyle("width", CKEDITOR.tools.cssLength(c)) : b.removeStyle("width"), !d && b.removeAttribute("width")) : 4 == a ? c.match(k) ? b.setStyle("width", CKEDITOR.tools.cssLength(c)) : (a = this.getDialog().originalElement, "true" == a.getCustomData("isReady") && b.setStyle("width", a.$.width + "px")) : 8 == a && (b.removeAttribute("width"), b.removeStyle("width")) + }}, + {type: "text", id: "txtHeight", + width: "45px", label: c.lang.common.height, onKeyUp: w, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: function () { + var a = this.getValue().match(v); + (a = !!(a && 0 !== parseInt(a[1], 10))) || alert(c.lang.common.invalidHeight); + return a + }, setup: y, commit: function (a, b, d) { + var c = this.getValue(); + a == f ? (c ? b.setStyle("height", CKEDITOR.tools.cssLength(c)) : b.removeStyle("height"), !d && b.removeAttribute("height")) : 4 == a ? c.match(k) ? b.setStyle("height", CKEDITOR.tools.cssLength(c)) : (a = this.getDialog().originalElement, + "true" == a.getCustomData("isReady") && b.setStyle("height", a.$.height + "px")) : 8 == a && (b.removeAttribute("height"), b.removeStyle("height")) + }} + ]}, + {id: "ratioLock", type: "html", style: "margin-top:30px;width:40px;height:40px;", onLoad: function () { + var a = CKEDITOR.document.getById(u), b = CKEDITOR.document.getById(p); + a && (a.on("click", function (a) { + x(this); + a.data && a.data.preventDefault() + }, this.getDialog()), a.on("mouseover", function () { + this.addClass("cke_btn_over") + }, a), a.on("mouseout", function () { + this.removeClass("cke_btn_over") + }, + a)); + b && (b.on("click", function (a) { + l(this); + var b = this.originalElement, c = this.getValueOf("info", "txtWidth"); + if (b.getCustomData("isReady") == "true" && c) { + b = b.$.height / b.$.width * c; + if (!isNaN(b)) { + this.setValueOf("info", "txtHeight", Math.round(b)); + g(this) + } + } + a.data && a.data.preventDefault() + }, this.getDialog()), b.on("mouseover", function () { + this.addClass("cke_btn_over") + }, b), b.on("mouseout", function () { + this.removeClass("cke_btn_over") + }, b)) + }, html: '
' + c.lang.image.lockRatio + '' + c.lang.image.resetSize + "
"} + ]}, + {type: "vbox", padding: 1, children: [ + {type: "text", id: "txtBorder", requiredContent: "img{border-width}", width: "60px", label: c.lang.image.border, "default": "", onKeyUp: function () { + g(this.getDialog()) + }, + onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder), setup: function (a, b) { + if (a == f) { + var d; + d = (d = (d = b.getStyle("border-width")) && d.match(/^(\d+px)(?: \1 \1 \1)?$/)) && parseInt(d[1], 10); + isNaN(parseInt(d, 10)) && (d = b.getAttribute("border")); + this.setValue(d) + } + }, commit: function (a, b, d) { + var c = parseInt(this.getValue(), 10); + a == f || 4 == a ? (isNaN(c) ? !c && this.isChanged() && b.removeStyle("border") : (b.setStyle("border-width", CKEDITOR.tools.cssLength(c)), + b.setStyle("border-style", "solid")), !d && a == f && b.removeAttribute("border")) : 8 == a && (b.removeAttribute("border"), b.removeStyle("border-width"), b.removeStyle("border-style"), b.removeStyle("border-color")) + }}, + {type: "text", id: "txtHSpace", requiredContent: "img{margin-left,margin-right}", width: "60px", label: c.lang.image.hSpace, "default": "", onKeyUp: function () { + g(this.getDialog()) + }, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace), + setup: function (a, b) { + if (a == f) { + var d, c; + d = b.getStyle("margin-left"); + c = b.getStyle("margin-right"); + d = d && d.match(o); + c = c && c.match(o); + d = parseInt(d, 10); + c = parseInt(c, 10); + d = d == c && d; + isNaN(parseInt(d, 10)) && (d = b.getAttribute("hspace")); + this.setValue(d) + } + }, commit: function (a, b, c) { + var e = parseInt(this.getValue(), 10); + a == f || 4 == a ? (isNaN(e) ? !e && this.isChanged() && (b.removeStyle("margin-left"), b.removeStyle("margin-right")) : (b.setStyle("margin-left", CKEDITOR.tools.cssLength(e)), b.setStyle("margin-right", CKEDITOR.tools.cssLength(e))), + !c && a == f && b.removeAttribute("hspace")) : 8 == a && (b.removeAttribute("hspace"), b.removeStyle("margin-left"), b.removeStyle("margin-right")) + }}, + {type: "text", id: "txtVSpace", requiredContent: "img{margin-top,margin-bottom}", width: "60px", label: c.lang.image.vSpace, "default": "", onKeyUp: function () { + g(this.getDialog()) + }, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace), setup: function (a, b) { + if (a == f) { + var c, e; + c = b.getStyle("margin-top"); + e = + b.getStyle("margin-bottom"); + c = c && c.match(o); + e = e && e.match(o); + c = parseInt(c, 10); + e = parseInt(e, 10); + c = c == e && c; + isNaN(parseInt(c, 10)) && (c = b.getAttribute("vspace")); + this.setValue(c) + } + }, commit: function (a, b, c) { + var e = parseInt(this.getValue(), 10); + a == f || 4 == a ? (isNaN(e) ? !e && this.isChanged() && (b.removeStyle("margin-top"), b.removeStyle("margin-bottom")) : (b.setStyle("margin-top", CKEDITOR.tools.cssLength(e)), b.setStyle("margin-bottom", CKEDITOR.tools.cssLength(e))), !c && a == f && b.removeAttribute("vspace")) : 8 == a && (b.removeAttribute("vspace"), + b.removeStyle("margin-top"), b.removeStyle("margin-bottom")) + }}, + {id: "cmbAlign", requiredContent: "img{float}", type: "select", widths: ["35%", "65%"], style: "width:90px", label: c.lang.common.align, "default": "", items: [ + [c.lang.common.notSet, ""], + [c.lang.common.alignLeft, "left"], + [c.lang.common.alignRight, "right"] + ], onChange: function () { + g(this.getDialog()); + i.call(this, "advanced:txtdlgGenStyle") + }, setup: function (a, b) { + if (a == f) { + var c = b.getStyle("float"); + switch (c) { + case "inherit": + case "none": + c = "" + } + !c && (c = (b.getAttribute("align") || + "").toLowerCase()); + this.setValue(c) + } + }, commit: function (a, b, c) { + var e = this.getValue(); + if (a == f || 4 == a) { + if (e ? b.setStyle("float", e) : b.removeStyle("float"), !c && a == f)switch (e = (b.getAttribute("align") || "").toLowerCase(), e) { + case "left": + case "right": + b.removeAttribute("align") + } + } else 8 == a && b.removeStyle("float") + }} + ]} + ]}, + {type: "vbox", height: "250px", children: [ + {type: "html", id: "htmlPreview", style: "width:95%;", html: "
" + CKEDITOR.tools.htmlEncode(c.lang.common.preview) + '
' + (c.config.image_previewText || "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.") + + "
"} + ]} + ]} + ]}, + {id: "Link", requiredContent: "a[href]", label: c.lang.image.linkTab, padding: 0, elements: [ + {id: "txtUrl", type: "text", label: c.lang.common.url, style: "width: 100%", "default": "", setup: function (a, b) { + if (2 == a) { + var c = b.data("cke-saved-href"); + c || (c = b.getAttribute("href")); + this.setValue(c) + } + }, commit: function (a, b) { + if (2 == a && (this.getValue() || this.isChanged())) { + var d = decodeURI(this.getValue()); + b.data("cke-saved-href", d); + b.setAttribute("href", d); + if (this.getValue() || !c.config.image_removeLinkByEmptyURL)this.getDialog().addLink = !0 + } + }}, + {type: "button", id: "browse", filebrowser: {action: "Browse", target: "Link:txtUrl", url: c.config.filebrowserImageBrowseLinkUrl}, style: "float:right", hidden: !0, label: c.lang.common.browseServer}, + {id: "cmbTarget", type: "select", requiredContent: "a[target]", label: c.lang.common.target, "default": "", items: [ + [c.lang.common.notSet, ""], + [c.lang.common.targetNew, "_blank"], + [c.lang.common.targetTop, "_top"], + [c.lang.common.targetSelf, "_self"], + [c.lang.common.targetParent, "_parent"] + ], setup: function (a, b) { + 2 == a && this.setValue(b.getAttribute("target") || + "") + }, commit: function (a, b) { + 2 == a && (this.getValue() || this.isChanged()) && b.setAttribute("target", this.getValue()) + }} + ]}, + {id: "Upload", hidden: !0, filebrowser: "uploadButton", label: c.lang.image.upload, elements: [ + {type: "file", id: "upload", label: c.lang.image.btnUpload, style: "height:40px", size: 38}, + {type: "fileButton", id: "uploadButton", filebrowser: "info:txtUrl", label: c.lang.image.btnUpload, "for": ["Upload", "upload"]} + ]}, + {id: "advanced", label: c.lang.common.advancedTab, elements: [ + {type: "hbox", widths: ["50%", "25%", "25%"], + children: [ + {type: "text", id: "linkId", requiredContent: "img[id]", label: c.lang.common.id, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("id")) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("id", this.getValue()) + }}, + {id: "cmbLangDir", type: "select", requiredContent: "img[dir]", style: "width : 100px;", label: c.lang.common.langDir, "default": "", items: [ + [c.lang.common.notSet, ""], + [c.lang.common.langDirLtr, "ltr"], + [c.lang.common.langDirRtl, "rtl"] + ], setup: function (a, b) { + a == f && this.setValue(b.getAttribute("dir")) + }, + commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("dir", this.getValue()) + }}, + {type: "text", id: "txtLangCode", requiredContent: "img[lang]", label: c.lang.common.langCode, "default": "", setup: function (a, b) { + a == f && this.setValue(b.getAttribute("lang")) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("lang", this.getValue()) + }} + ]}, + {type: "text", id: "txtGenLongDescr", requiredContent: "img[longdesc]", label: c.lang.common.longDescr, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("longDesc")) + }, + commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("longDesc", this.getValue()) + }}, + {type: "hbox", widths: ["50%", "50%"], children: [ + {type: "text", id: "txtGenClass", requiredContent: "img(cke-xyz)", label: c.lang.common.cssClass, "default": "", setup: function (a, b) { + a == f && this.setValue(b.getAttribute("class")) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("class", this.getValue()) + }}, + {type: "text", id: "txtGenTitle", requiredContent: "img[title]", label: c.lang.common.advisoryTitle, + "default": "", onChange: function () { + g(this.getDialog()) + }, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("title")) + }, commit: function (a, b) { + a == f ? (this.getValue() || this.isChanged()) && b.setAttribute("title", this.getValue()) : 4 == a ? b.setAttribute("title", this.getValue()) : 8 == a && b.removeAttribute("title") + }} + ]}, + {type: "text", id: "txtdlgGenStyle", requiredContent: "img{cke-xyz}", label: c.lang.common.cssStyle, validate: CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle), "default": "", setup: function (a, b) { + if (a == f) { + var c = b.getAttribute("style"); + !c && b.$.style.cssText && (c = b.$.style.cssText); + this.setValue(c); + var e = b.$.style.height, c = b.$.style.width, e = (e ? e : "").match(k), c = (c ? c : "").match(k); + this.attributesInStyle = {height: !!e, width: !!c} + } + }, onChange: function () { + i.call(this, "info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight".split(" ")); + g(this) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("style", this.getValue()) + }} + ]} + ]} + }; + CKEDITOR.dialog.add("image", function (c) { + return r(c, "image") + }); + CKEDITOR.dialog.add("imagebutton", function (c) { + return r(c, "imagebutton") + }) +})(); \ No newline at end of file diff --git a/plugins/redmine_ckeditor/assets/ckeditor/plugins/link/dialogs/link.js b/plugins/redmine_ckeditor/assets/ckeditor/plugins/link/dialogs/link.js index 84a5c8b5c..dfd773de0 100644 --- a/plugins/redmine_ckeditor/assets/ckeditor/plugins/link/dialogs/link.js +++ b/plugins/redmine_ckeditor/assets/ckeditor/plugins/link/dialogs/link.js @@ -1,37 +1,492 @@ /* Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("link",function(n){var p,q;function r(a){return a.replace(/'/g,"\\$&")}function t(a){var g,c=p,d,e;g=[q,"("];for(var b=0;b0?this.getElement().show():this.getElement().hide()},children:[{type:"hbox",id:"selectAnchor",children:[{type:"select",id:"anchorName","default":"",label:b.anchorName,style:"width: 100%;",items:[[""]],setup:function(a){this.clear();this.add("");for(var b=0;b0?this.getElement().show():this.getElement().hide()}}]},{type:"html",id:"noAnchors",style:"text-align: center;",html:'
'+CKEDITOR.tools.htmlEncode(b.noAnchors)+"
",focus:!0,setup:function(a){a.anchors.length<1?this.getElement().show():this.getElement().hide()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}},{type:"vbox",id:"emailOptions",padding:1,children:[{type:"text", -id:"emailAddress",label:b.emailAddress,required:!0,validate:function(){var a=this.getDialog();return!a.getContentElement("info","linkType")||a.getValueOf("info","linkType")!="email"?true:CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this)},setup:function(a){a.email&&this.setValue(a.email.address);(a=this.getDialog().getContentElement("info","linkType"))&&a.getValue()=="email"&&this.select()},commit:function(a){if(!a.email)a.email={};a.email.address=this.getValue()}},{type:"text",id:"emailSubject", -label:b.emailSubject,setup:function(a){a.email&&this.setValue(a.email.subject)},commit:function(a){if(!a.email)a.email={};a.email.subject=this.getValue()}},{type:"textarea",id:"emailBody",label:b.emailBody,rows:3,"default":"",setup:function(a){a.email&&this.setValue(a.email.body)},commit:function(a){if(!a.email)a.email={};a.email.body=this.getValue()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}}]},{id:"target",requiredContent:"a[target]",label:b.target, -title:b.target,elements:[{type:"hbox",widths:["50%","50%"],children:[{type:"select",id:"linkTargetType",label:i.target,"default":"notSet",style:"width : 100%;",items:[[i.notSet,"notSet"],[b.targetFrame,"frame"],[b.targetPopup,"popup"],[i.targetNew,"_blank"],[i.targetTop,"_top"],[i.targetSelf,"_self"],[i.targetParent,"_parent"]],onChange:s,setup:function(a){a.target&&this.setValue(a.target.type||"notSet");s.call(this)},commit:function(a){if(!a.target)a.target={};a.target.type=this.getValue()}},{type:"text", -id:"linkTargetName",label:b.targetFrameName,"default":"",setup:function(a){a.target&&this.setValue(a.target.name)},commit:function(a){if(!a.target)a.target={};a.target.name=this.getValue().replace(/\W/gi,"")}}]},{type:"vbox",width:"100%",align:"center",padding:2,id:"popupFeatures",children:[{type:"fieldset",label:b.popupFeatures,children:[{type:"hbox",children:[{type:"checkbox",id:"resizable",label:b.popupResizable,setup:j,commit:l},{type:"checkbox",id:"status",label:b.popupStatusBar,setup:j,commit:l}]}, -{type:"hbox",children:[{type:"checkbox",id:"location",label:b.popupLocationBar,setup:j,commit:l},{type:"checkbox",id:"toolbar",label:b.popupToolbar,setup:j,commit:l}]},{type:"hbox",children:[{type:"checkbox",id:"menubar",label:b.popupMenuBar,setup:j,commit:l},{type:"checkbox",id:"fullscreen",label:b.popupFullScreen,setup:j,commit:l}]},{type:"hbox",children:[{type:"checkbox",id:"scrollbars",label:b.popupScrollBars,setup:j,commit:l},{type:"checkbox",id:"dependent",label:b.popupDependent,setup:j,commit:l}]}, -{type:"hbox",children:[{type:"text",widths:["50%","50%"],labelLayout:"horizontal",label:i.width,id:"width",setup:j,commit:l},{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:b.popupLeft,id:"left",setup:j,commit:l}]},{type:"hbox",children:[{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:i.height,id:"height",setup:j,commit:l},{type:"text",labelLayout:"horizontal",label:b.popupTop,widths:["50%","50%"],id:"top",setup:j,commit:l}]}]}]}]},{id:"upload",label:b.upload,title:b.upload, -hidden:!0,filebrowser:"uploadButton",elements:[{type:"file",id:"upload",label:i.upload,style:"height:40px",size:29},{type:"fileButton",id:"uploadButton",label:i.uploadSubmit,filebrowser:"info:url","for":["upload","upload"]}]},{id:"advanced",label:b.advanced,title:b.advanced,elements:[{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",id:"advId",requiredContent:"a[id]",label:b.id,setup:k,commit:m},{type:"select",id:"advLangDir",requiredContent:"a[dir]", -label:b.langDir,"default":"",style:"width:110px",items:[[i.notSet,""],[b.langDirLTR,"ltr"],[b.langDirRTL,"rtl"]],setup:k,commit:m},{type:"text",id:"advAccessKey",requiredContent:"a[accesskey]",width:"80px",label:b.acccessKey,maxLength:1,setup:k,commit:m}]},{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",label:b.name,id:"advName",requiredContent:"a[name]",setup:k,commit:m},{type:"text",label:b.langCode,id:"advLangCode",requiredContent:"a[lang]",width:"110px","default":"",setup:k,commit:m}, -{type:"text",label:b.tabIndex,id:"advTabIndex",requiredContent:"a[tabindex]",width:"80px",maxLength:5,setup:k,commit:m}]}]},{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.advisoryTitle,requiredContent:"a[title]","default":"",id:"advTitle",setup:k,commit:m},{type:"text",label:b.advisoryContentType,requiredContent:"a[type]","default":"",id:"advContentType",setup:k,commit:m}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.cssClasses, -requiredContent:"a(cke-xyz)","default":"",id:"advCSSClasses",setup:k,commit:m},{type:"text",label:b.charset,requiredContent:"a[charset]","default":"",id:"advCharset",setup:k,commit:m}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.rel,requiredContent:"a[rel]","default":"",id:"advRel",setup:k,commit:m},{type:"text",label:b.styles,requiredContent:"a{cke-xyz}","default":"",id:"advStyles",validate:CKEDITOR.dialog.validate.inlineStyle(n.lang.common.invalidInlineStyle),setup:k,commit:m}]}]}]}], -onShow:function(){var a=this.getParentEditor(),b=a.getSelection(),c=null;(c=w.getSelectedLink(a))&&c.hasAttribute("href")?b.getSelectedElement()||b.selectElement(c):c=null;this.setupContent(I.apply(this,[a,c]))},onOk:function(){var a={},b=[],c={},d=this.getParentEditor();this.commitContent(c);switch(c.type||"url"){case "url":var e=c.url&&c.url.protocol!=void 0?c.url.protocol:"http://",i=c.url&&CKEDITOR.tools.trim(c.url.url)||"";a["data-cke-saved-href"]=i.indexOf("/")===0?i:e+i;break;case "anchor":e= -c.anchor&&c.anchor.id;a["data-cke-saved-href"]="#"+(c.anchor&&c.anchor.name||e||"");break;case "email":var f=c.email,e=f.address;switch(o){case "":case "encode":var i=encodeURIComponent(f.subject||""),h=encodeURIComponent(f.body||""),f=[];i&&f.push("subject="+i);h&&f.push("body="+h);f=f.length?"?"+f.join("&"):"";if(o=="encode"){e=["javascript:void(location.href='mailto:'+",u(e)];f&&e.push("+'",r(f),"'");e.push(")")}else e=["mailto:",e,f];break;default:e=e.split("@",2);f.name=e[0];f.domain=e[1];e= -["javascript:",t(f)]}a["data-cke-saved-href"]=e.join("")}if(c.target)if(c.target.type=="popup"){for(var e=["window.open(this.href, '",c.target.name||"","', '"],j=["resizable","status","location","toolbar","menubar","fullscreen","scrollbars","dependent"],i=j.length,f=function(a){c.target[a]&&j.push(a+"="+c.target[a])},h=0;h 0 ? this.getElement().show() : this.getElement().hide() + }, children: [ + {type: "hbox", id: "selectAnchor", children: [ + {type: "select", id: "anchorName", "default": "", label: b.anchorName, style: "width: 100%;", items: [ + [""] + ], setup: function (a) { + this.clear(); + this.add(""); + for (var b = 0; b < a.anchors.length; b++)a.anchors[b].name && this.add(a.anchors[b].name); + a.anchor && + this.setValue(a.anchor.name); + (a = this.getDialog().getContentElement("info", "linkType")) && a.getValue() == "email" && this.focus() + }, commit: function (a) { + if (!a.anchor)a.anchor = {}; + a.anchor.name = this.getValue() + }}, + {type: "select", id: "anchorId", "default": "", label: b.anchorId, style: "width: 100%;", items: [ + [""] + ], setup: function (a) { + this.clear(); + this.add(""); + for (var b = 0; b < a.anchors.length; b++)a.anchors[b].id && this.add(a.anchors[b].id); + a.anchor && this.setValue(a.anchor.id) + }, commit: function (a) { + if (!a.anchor)a.anchor = {}; + a.anchor.id = + this.getValue() + }} + ], setup: function (a) { + a.anchors.length > 0 ? this.getElement().show() : this.getElement().hide() + }} + ]}, + {type: "html", id: "noAnchors", style: "text-align: center;", html: '
' + CKEDITOR.tools.htmlEncode(b.noAnchors) + "
", focus: !0, setup: function (a) { + a.anchors.length < 1 ? this.getElement().show() : this.getElement().hide() + }} + ], setup: function () { + this.getDialog().getContentElement("info", "linkType") || this.getElement().hide() + }}, + {type: "vbox", id: "emailOptions", padding: 1, children: [ + {type: "text", + id: "emailAddress", label: b.emailAddress, required: !0, validate: function () { + var a = this.getDialog(); + return!a.getContentElement("info", "linkType") || a.getValueOf("info", "linkType") != "email" ? true : CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this) + }, setup: function (a) { + a.email && this.setValue(a.email.address); + (a = this.getDialog().getContentElement("info", "linkType")) && a.getValue() == "email" && this.select() + }, commit: function (a) { + if (!a.email)a.email = {}; + a.email.address = this.getValue() + }}, + {type: "text", id: "emailSubject", + label: b.emailSubject, setup: function (a) { + a.email && this.setValue(a.email.subject) + }, commit: function (a) { + if (!a.email)a.email = {}; + a.email.subject = this.getValue() + }}, + {type: "textarea", id: "emailBody", label: b.emailBody, rows: 3, "default": "", setup: function (a) { + a.email && this.setValue(a.email.body) + }, commit: function (a) { + if (!a.email)a.email = {}; + a.email.body = this.getValue() + }} + ], setup: function () { + this.getDialog().getContentElement("info", "linkType") || this.getElement().hide() + }} + ]}, + {id: "target", requiredContent: "a[target]", label: b.target, + title: b.target, elements: [ + {type: "hbox", widths: ["50%", "50%"], children: [ + {type: "select", id: "linkTargetType", label: i.target, "default": "notSet", style: "width : 100%;", items: [ + [i.notSet, "notSet"], + [b.targetFrame, "frame"], + [b.targetPopup, "popup"], + [i.targetNew, "_blank"], + [i.targetTop, "_top"], + [i.targetSelf, "_self"], + [i.targetParent, "_parent"] + ], onChange: s, setup: function (a) { + a.target && this.setValue(a.target.type || "notSet"); + s.call(this) + }, commit: function (a) { + if (!a.target)a.target = {}; + a.target.type = this.getValue() + }}, + {type: "text", + id: "linkTargetName", label: b.targetFrameName, "default": "", setup: function (a) { + a.target && this.setValue(a.target.name) + }, commit: function (a) { + if (!a.target)a.target = {}; + a.target.name = this.getValue().replace(/\W/gi, "") + }} + ]}, + {type: "vbox", width: "100%", align: "center", padding: 2, id: "popupFeatures", children: [ + {type: "fieldset", label: b.popupFeatures, children: [ + {type: "hbox", children: [ + {type: "checkbox", id: "resizable", label: b.popupResizable, setup: j, commit: l}, + {type: "checkbox", id: "status", label: b.popupStatusBar, setup: j, commit: l} + ]}, + {type: "hbox", children: [ + {type: "checkbox", id: "location", label: b.popupLocationBar, setup: j, commit: l}, + {type: "checkbox", id: "toolbar", label: b.popupToolbar, setup: j, commit: l} + ]}, + {type: "hbox", children: [ + {type: "checkbox", id: "menubar", label: b.popupMenuBar, setup: j, commit: l}, + {type: "checkbox", id: "fullscreen", label: b.popupFullScreen, setup: j, commit: l} + ]}, + {type: "hbox", children: [ + {type: "checkbox", id: "scrollbars", label: b.popupScrollBars, setup: j, commit: l}, + {type: "checkbox", id: "dependent", label: b.popupDependent, setup: j, commit: l} + ]}, + {type: "hbox", children: [ + {type: "text", widths: ["50%", "50%"], labelLayout: "horizontal", label: i.width, id: "width", setup: j, commit: l}, + {type: "text", labelLayout: "horizontal", widths: ["50%", "50%"], label: b.popupLeft, id: "left", setup: j, commit: l} + ]}, + {type: "hbox", children: [ + {type: "text", labelLayout: "horizontal", widths: ["50%", "50%"], label: i.height, id: "height", setup: j, commit: l}, + {type: "text", labelLayout: "horizontal", label: b.popupTop, widths: ["50%", "50%"], id: "top", setup: j, commit: l} + ]} + ]} + ]} + ]}, + {id: "upload", label: b.upload, title: b.upload, + hidden: !0, filebrowser: "uploadButton", elements: [ + {type: "file", id: "upload", label: i.upload, style: "height:40px", size: 29}, + {type: "fileButton", id: "uploadButton", label: i.uploadSubmit, filebrowser: "info:url", "for": ["upload", "upload"]} + ]}, + {id: "advanced", label: b.advanced, title: b.advanced, elements: [ + {type: "vbox", padding: 1, children: [ + {type: "hbox", widths: ["45%", "35%", "20%"], children: [ + {type: "text", id: "advId", requiredContent: "a[id]", label: b.id, setup: k, commit: m}, + {type: "select", id: "advLangDir", requiredContent: "a[dir]", + label: b.langDir, "default": "", style: "width:110px", items: [ + [i.notSet, ""], + [b.langDirLTR, "ltr"], + [b.langDirRTL, "rtl"] + ], setup: k, commit: m}, + {type: "text", id: "advAccessKey", requiredContent: "a[accesskey]", width: "80px", label: b.acccessKey, maxLength: 1, setup: k, commit: m} + ]}, + {type: "hbox", widths: ["45%", "35%", "20%"], children: [ + {type: "text", label: b.name, id: "advName", requiredContent: "a[name]", setup: k, commit: m}, + {type: "text", label: b.langCode, id: "advLangCode", requiredContent: "a[lang]", width: "110px", "default": "", setup: k, commit: m}, + {type: "text", label: b.tabIndex, id: "advTabIndex", requiredContent: "a[tabindex]", width: "80px", maxLength: 5, setup: k, commit: m} + ]} + ]}, + {type: "vbox", padding: 1, children: [ + {type: "hbox", widths: ["45%", "55%"], children: [ + {type: "text", label: b.advisoryTitle, requiredContent: "a[title]", "default": "", id: "advTitle", setup: k, commit: m}, + {type: "text", label: b.advisoryContentType, requiredContent: "a[type]", "default": "", id: "advContentType", setup: k, commit: m} + ]}, + {type: "hbox", widths: ["45%", "55%"], children: [ + {type: "text", label: b.cssClasses, + requiredContent: "a(cke-xyz)", "default": "", id: "advCSSClasses", setup: k, commit: m}, + {type: "text", label: b.charset, requiredContent: "a[charset]", "default": "", id: "advCharset", setup: k, commit: m} + ]}, + {type: "hbox", widths: ["45%", "55%"], children: [ + {type: "text", label: b.rel, requiredContent: "a[rel]", "default": "", id: "advRel", setup: k, commit: m}, + {type: "text", label: b.styles, requiredContent: "a{cke-xyz}", "default": "", id: "advStyles", validate: CKEDITOR.dialog.validate.inlineStyle(n.lang.common.invalidInlineStyle), setup: k, commit: m} + ]} + ]} + ]} + ], + onShow: function () { + var a = this.getParentEditor(), b = a.getSelection(), c = null; + (c = w.getSelectedLink(a)) && c.hasAttribute("href") ? b.getSelectedElement() || b.selectElement(c) : c = null; + this.setupContent(I.apply(this, [a, c])) + }, onOk: function () { + var a = {}, b = [], c = {}, d = this.getParentEditor(); + this.commitContent(c); + switch (c.type || "url") { + case "url": + var e = c.url && c.url.protocol != void 0 ? c.url.protocol : "http://", i = c.url && CKEDITOR.tools.trim(c.url.url) || ""; + a["data-cke-saved-href"] = i.indexOf("/") === 0 ? i : e + i; + break; + case "anchor": + e = + c.anchor && c.anchor.id; + a["data-cke-saved-href"] = "#" + (c.anchor && c.anchor.name || e || ""); + break; + case "email": + var f = c.email, e = f.address; + switch (o) { + case "": + case "encode": + var i = encodeURIComponent(f.subject || ""), h = encodeURIComponent(f.body || ""), f = []; + i && f.push("subject=" + i); + h && f.push("body=" + h); + f = f.length ? "?" + f.join("&") : ""; + if (o == "encode") { + e = ["javascript:void(location.href='mailto:'+", u(e)]; + f && e.push("+'", r(f), "'"); + e.push(")") + } else e = ["mailto:", e, f]; + break; + default: + e = e.split("@", 2); + f.name = e[0]; + f.domain = e[1]; + e = + ["javascript:", t(f)] + } + a["data-cke-saved-href"] = e.join("") + } + if (c.target)if (c.target.type == "popup") { + for (var e = ["window.open(this.href, '", c.target.name || "", "', '"], j = ["resizable", "status", "location", "toolbar", "menubar", "fullscreen", "scrollbars", "dependent"], i = j.length, f = function (a) { + c.target[a] && j.push(a + "=" + c.target[a]) + }, h = 0; h < i; h++)j[h] = j[h] + (c.target[j[h]] ? "=yes" : "=no"); + f("width"); + f("left"); + f("height"); + f("top"); + e.push(j.join(","), "'); return false;"); + a["data-cke-pa-onclick"] = e.join(""); + b.push("target") + } else { + c.target.type != + "notSet" && c.target.name ? a.target = c.target.name : b.push("target"); + b.push("data-cke-pa-onclick", "onclick") + } + if (c.adv) { + e = function (d, e) { + var f = c.adv[d]; + f ? a[e] = f : b.push(e) + }; + e("advId", "id"); + e("advLangDir", "dir"); + e("advAccessKey", "accessKey"); + c.adv.advName ? a.name = a["data-cke-saved-name"] = c.adv.advName : b = b.concat(["data-cke-saved-name", "name"]); + e("advLangCode", "lang"); + e("advTabIndex", "tabindex"); + e("advTitle", "title"); + e("advContentType", "type"); + e("advCSSClasses", "class"); + e("advCharset", "charset"); + e("advStyles", + "style"); + e("advRel", "rel") + } + e = d.getSelection(); + a.href = a["data-cke-saved-href"]; + if (this._.selectedElement) { + d = this._.selectedElement; + i = d.data("cke-saved-href"); + f = d.getHtml(); + d.setAttributes(a); + d.removeAttributes(b); + c.adv && (c.adv.advName && CKEDITOR.plugins.link.synAnchorSelector) && d.addClass(d.getChildCount() ? "cke_anchor" : "cke_anchor_empty"); + if (i == f || c.type == "email" && f.indexOf("@") != -1) { + d.setHtml(c.type == "email" ? c.email.address : a["data-cke-saved-href"]); + e.selectElement(d) + } + delete this._.selectedElement + } else { + e = + e.getRanges()[0]; + if (e.collapsed) { + d = new CKEDITOR.dom.text(c.type == "email" ? c.email.address : a["data-cke-saved-href"], d.document); + e.insertNode(d); + e.selectNodeContents(d) + } + d = new CKEDITOR.style({element: "a", attributes: a}); + d.type = CKEDITOR.STYLE_INLINE; + d.applyToRange(e); + e.select() + } + }, onLoad: function () { + n.config.linkShowAdvancedTab || this.hidePage("advanced"); + n.config.linkShowTargetTab || this.hidePage("target") + }, onFocus: function () { + var a = this.getContentElement("info", "linkType"); + if (a && a.getValue() == "url") { + a = this.getContentElement("info", + "url"); + a.select() + } + }} +}); \ No newline at end of file diff --git a/public/plugin_assets/redmine_ckeditor/ckeditor/plugins/image/dialogs/image.js b/public/plugin_assets/redmine_ckeditor/ckeditor/plugins/image/dialogs/image.js index 953de6967..8b0eb6a3c 100644 --- a/public/plugin_assets/redmine_ckeditor/ckeditor/plugins/image/dialogs/image.js +++ b/public/plugin_assets/redmine_ckeditor/ckeditor/plugins/image/dialogs/image.js @@ -1,43 +1,453 @@ /* Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){var r=function(c,j){function r(){var a=arguments,b=this.getContentElement("advanced","txtdlgGenStyle");b&&b.commit.apply(b,a);this.foreach(function(b){b.commit&&"txtdlgGenStyle"!=b.id&&b.commit.apply(b,a)})}function i(a){if(!s){s=1;var b=this.getDialog(),d=b.imageElement;if(d){this.commit(f,d);for(var a=[].concat(a),e=a.length,c,g=0;g'+c.lang.image.lockRatio+''+c.lang.image.resetSize+""}]},{type:"vbox",padding:1,children:[{type:"text",id:"txtBorder",requiredContent:"img{border-width}",width:"60px",label:c.lang.image.border,"default":"",onKeyUp:function(){g(this.getDialog())}, -onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder),setup:function(a,b){if(a==f){var d;d=(d=(d=b.getStyle("border-width"))&&d.match(/^(\d+px)(?: \1 \1 \1)?$/))&&parseInt(d[1],10);isNaN(parseInt(d,10))&&(d=b.getAttribute("border"));this.setValue(d)}},commit:function(a,b,d){var c=parseInt(this.getValue(),10);a==f||4==a?(isNaN(c)?!c&&this.isChanged()&&b.removeStyle("border"):(b.setStyle("border-width",CKEDITOR.tools.cssLength(c)), -b.setStyle("border-style","solid")),!d&&a==f&&b.removeAttribute("border")):8==a&&(b.removeAttribute("border"),b.removeStyle("border-width"),b.removeStyle("border-style"),b.removeStyle("border-color"))}},{type:"text",id:"txtHSpace",requiredContent:"img{margin-left,margin-right}",width:"60px",label:c.lang.image.hSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace), -setup:function(a,b){if(a==f){var d,c;d=b.getStyle("margin-left");c=b.getStyle("margin-right");d=d&&d.match(o);c=c&&c.match(o);d=parseInt(d,10);c=parseInt(c,10);d=d==c&&d;isNaN(parseInt(d,10))&&(d=b.getAttribute("hspace"));this.setValue(d)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle("margin-left"),b.removeStyle("margin-right")):(b.setStyle("margin-left",CKEDITOR.tools.cssLength(e)),b.setStyle("margin-right",CKEDITOR.tools.cssLength(e))), -!c&&a==f&&b.removeAttribute("hspace")):8==a&&(b.removeAttribute("hspace"),b.removeStyle("margin-left"),b.removeStyle("margin-right"))}},{type:"text",id:"txtVSpace",requiredContent:"img{margin-top,margin-bottom}",width:"60px",label:c.lang.image.vSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace),setup:function(a,b){if(a==f){var c,e;c=b.getStyle("margin-top");e= -b.getStyle("margin-bottom");c=c&&c.match(o);e=e&&e.match(o);c=parseInt(c,10);e=parseInt(e,10);c=c==e&&c;isNaN(parseInt(c,10))&&(c=b.getAttribute("vspace"));this.setValue(c)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle("margin-top"),b.removeStyle("margin-bottom")):(b.setStyle("margin-top",CKEDITOR.tools.cssLength(e)),b.setStyle("margin-bottom",CKEDITOR.tools.cssLength(e))),!c&&a==f&&b.removeAttribute("vspace")):8==a&&(b.removeAttribute("vspace"), -b.removeStyle("margin-top"),b.removeStyle("margin-bottom"))}},{id:"cmbAlign",requiredContent:"img{float}",type:"select",widths:["35%","65%"],style:"width:90px",label:c.lang.common.align,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.alignLeft,"left"],[c.lang.common.alignRight,"right"]],onChange:function(){g(this.getDialog());i.call(this,"advanced:txtdlgGenStyle")},setup:function(a,b){if(a==f){var c=b.getStyle("float");switch(c){case "inherit":case "none":c=""}!c&&(c=(b.getAttribute("align")|| -"").toLowerCase());this.setValue(c)}},commit:function(a,b,c){var e=this.getValue();if(a==f||4==a){if(e?b.setStyle("float",e):b.removeStyle("float"),!c&&a==f)switch(e=(b.getAttribute("align")||"").toLowerCase(),e){case "left":case "right":b.removeAttribute("align")}}else 8==a&&b.removeStyle("float")}}]}]},{type:"vbox",height:"250px",children:[{type:"html",id:"htmlPreview",style:"width:95%;",html:"
"+CKEDITOR.tools.htmlEncode(c.lang.common.preview)+'
'+(c.config.image_previewText||"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.")+ -"
"}]}]}]},{id:"Link",requiredContent:"a[href]",label:c.lang.image.linkTab,padding:0,elements:[{id:"txtUrl",type:"text",label:c.lang.common.url,style:"width: 100%","default":"",setup:function(a,b){if(2==a){var c=b.data("cke-saved-href");c||(c=b.getAttribute("href"));this.setValue(c)}},commit:function(a,b){if(2==a&&(this.getValue()||this.isChanged())){var d=decodeURI(this.getValue());b.data("cke-saved-href",d);b.setAttribute("href",d);if(this.getValue()||!c.config.image_removeLinkByEmptyURL)this.getDialog().addLink= -!0}}},{type:"button",id:"browse",filebrowser:{action:"Browse",target:"Link:txtUrl",url:c.config.filebrowserImageBrowseLinkUrl},style:"float:right",hidden:!0,label:c.lang.common.browseServer},{id:"cmbTarget",type:"select",requiredContent:"a[target]",label:c.lang.common.target,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.targetNew,"_blank"],[c.lang.common.targetTop,"_top"],[c.lang.common.targetSelf,"_self"],[c.lang.common.targetParent,"_parent"]],setup:function(a,b){2==a&&this.setValue(b.getAttribute("target")|| -"")},commit:function(a,b){2==a&&(this.getValue()||this.isChanged())&&b.setAttribute("target",this.getValue())}}]},{id:"Upload",hidden:!0,filebrowser:"uploadButton",label:c.lang.image.upload,elements:[{type:"file",id:"upload",label:c.lang.image.btnUpload,style:"height:40px",size:38},{type:"fileButton",id:"uploadButton",filebrowser:"info:txtUrl",label:c.lang.image.btnUpload,"for":["Upload","upload"]}]},{id:"advanced",label:c.lang.common.advancedTab,elements:[{type:"hbox",widths:["50%","25%","25%"], -children:[{type:"text",id:"linkId",requiredContent:"img[id]",label:c.lang.common.id,setup:function(a,b){a==f&&this.setValue(b.getAttribute("id"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("id",this.getValue())}},{id:"cmbLangDir",type:"select",requiredContent:"img[dir]",style:"width : 100px;",label:c.lang.common.langDir,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.langDirLtr,"ltr"],[c.lang.common.langDirRtl,"rtl"]],setup:function(a,b){a==f&&this.setValue(b.getAttribute("dir"))}, -commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("dir",this.getValue())}},{type:"text",id:"txtLangCode",requiredContent:"img[lang]",label:c.lang.common.langCode,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("lang"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("lang",this.getValue())}}]},{type:"text",id:"txtGenLongDescr",requiredContent:"img[longdesc]",label:c.lang.common.longDescr,setup:function(a,b){a==f&&this.setValue(b.getAttribute("longDesc"))}, -commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("longDesc",this.getValue())}},{type:"hbox",widths:["50%","50%"],children:[{type:"text",id:"txtGenClass",requiredContent:"img(cke-xyz)",label:c.lang.common.cssClass,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("class"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("class",this.getValue())}},{type:"text",id:"txtGenTitle",requiredContent:"img[title]",label:c.lang.common.advisoryTitle, -"default":"",onChange:function(){g(this.getDialog())},setup:function(a,b){a==f&&this.setValue(b.getAttribute("title"))},commit:function(a,b){a==f?(this.getValue()||this.isChanged())&&b.setAttribute("title",this.getValue()):4==a?b.setAttribute("title",this.getValue()):8==a&&b.removeAttribute("title")}}]},{type:"text",id:"txtdlgGenStyle",requiredContent:"img{cke-xyz}",label:c.lang.common.cssStyle,validate:CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle),"default":"",setup:function(a, -b){if(a==f){var c=b.getAttribute("style");!c&&b.$.style.cssText&&(c=b.$.style.cssText);this.setValue(c);var e=b.$.style.height,c=b.$.style.width,e=(e?e:"").match(k),c=(c?c:"").match(k);this.attributesInStyle={height:!!e,width:!!c}}},onChange:function(){i.call(this,"info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight".split(" "));g(this)},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("style",this.getValue())}}]}]}}; -CKEDITOR.dialog.add("image",function(c){return r(c,"image")});CKEDITOR.dialog.add("imagebutton",function(c){return r(c,"imagebutton")})})(); \ No newline at end of file + */ +(function () { + var r = function (c, j) { + function r() { + var a = arguments, b = this.getContentElement("advanced", "txtdlgGenStyle"); + b && b.commit.apply(b, a); + this.foreach(function (b) { + b.commit && "txtdlgGenStyle" != b.id && b.commit.apply(b, a) + }) + } + + function i(a) { + if (!s) { + s = 1; + var b = this.getDialog(), d = b.imageElement; + if (d) { + this.commit(f, d); + for (var a = [].concat(a), e = a.length, c, g = 0; g < e; g++)(c = b.getContentElement.apply(b, a[g].split(":"))) && c.setup(f, d) + } + s = 0 + } + } + + var f = 1, k = /^\s*(\d+)((px)|\%)?\s*$/i, v = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i, o = /^\d+px$/, + w = function () { + var a = this.getValue(), b = this.getDialog(), d = a.match(k); + d && ("%" == d[2] && l(b, !1), a = d[1]); + b.lockRatio && (d = b.originalElement, "true" == d.getCustomData("isReady") && ("txtHeight" == this.id ? (a && "0" != a && (a = Math.round(d.$.width * (a / d.$.height))), isNaN(a) || b.setValueOf("info", "txtWidth", a)) : (a && "0" != a && (a = Math.round(d.$.height * (a / d.$.width))), isNaN(a) || b.setValueOf("info", "txtHeight", a)))); + g(b) + }, g = function (a) { + if (!a.originalElement || !a.preview)return 1; + a.commitContent(4, a.preview); + return 0 + }, s, l = function (a, b) { + if (!a.getContentElement("info", "ratioLock"))return null; + var d = a.originalElement; + if (!d)return null; + if ("check" == b) { + if (!a.userlockRatio && "true" == d.getCustomData("isReady")) { + var e = a.getValueOf("info", "txtWidth"), c = a.getValueOf("info", "txtHeight"), d = 1E3 * d.$.width / d.$.height, f = 1E3 * e / c; + a.lockRatio = !1; + !e && !c ? a.lockRatio = !0 : !isNaN(d) && !isNaN(f) && Math.round(d) == Math.round(f) && (a.lockRatio = !0) + } + } else void 0 != b ? a.lockRatio = b : (a.userlockRatio = 1, a.lockRatio = !a.lockRatio); + e = CKEDITOR.document.getById(p); + a.lockRatio ? + e.removeClass("cke_btn_unlocked") : e.addClass("cke_btn_unlocked"); + e.setAttribute("aria-checked", a.lockRatio); + CKEDITOR.env.hc && e.getChild(0).setHtml(a.lockRatio ? CKEDITOR.env.ie ? "■" : "▣" : CKEDITOR.env.ie ? "□" : "▢"); + return a.lockRatio + }, x = function (a) { + var b = a.originalElement; + if ("true" == b.getCustomData("isReady")) { + var d = a.getContentElement("info", "txtWidth"), e = a.getContentElement("info", "txtHeight"); + d && d.setValue(b.$.width); + e && e.setValue(b.$.height) + } + g(a) + }, y = function (a, b) { + function d(a, b) { + var d = a.match(k); + return d ? + ("%" == d[2] && (d[1] += "%", l(e, !1)), d[1]) : b + } + + if (a == f) { + var e = this.getDialog(), c = "", g = "txtWidth" == this.id ? "width" : "height", h = b.getAttribute(g); + h && (c = d(h, c)); + c = d(b.getStyle(g), c); + this.setValue(c) + } + }, t, q = function () { + var a = this.originalElement; + a.setCustomData("isReady", "true"); + a.removeListener("load", q); + a.removeListener("error", h); + a.removeListener("abort", h); + CKEDITOR.document.getById(m).setStyle("display", "none"); + this.dontResetSize || x(this); + this.firstLoad && CKEDITOR.tools.setTimeout(function () { + l(this, "check") + }, + 0, this); + this.dontResetSize = this.firstLoad = !1 + }, h = function () { + var a = this.originalElement; + a.removeListener("load", q); + a.removeListener("error", h); + a.removeListener("abort", h); + a = CKEDITOR.getUrl(CKEDITOR.plugins.get("image").path + "images/noimage.png"); + this.preview && this.preview.setAttribute("src", a); + CKEDITOR.document.getById(m).setStyle("display", "none"); + l(this, !1) + }, n = function (a) { + return CKEDITOR.tools.getNextId() + "_" + a + }, p = n("btnLockSizes"), u = n("btnResetSize"), m = n("ImagePreviewLoader"), A = n("previewLink"), + z = n("previewImage"); + return{title: c.lang.image["image" == j ? "title" : "titleButton"], minWidth: 420, minHeight: 360, onShow: function () { + this.linkEditMode = this.imageEditMode = this.linkElement = this.imageElement = !1; + this.lockRatio = !0; + this.userlockRatio = 0; + this.dontResetSize = !1; + this.firstLoad = !0; + this.addLink = !1; + var a = this.getParentEditor(), b = a.getSelection(), d = (b = b && b.getSelectedElement()) && a.elementPath(b).contains("a", 1); + CKEDITOR.document.getById(m).setStyle("display", "none"); + t = new CKEDITOR.dom.element("img", a.document); + this.preview = CKEDITOR.document.getById(z); + this.originalElement = a.document.createElement("img"); + this.originalElement.setAttribute("alt", ""); + this.originalElement.setCustomData("isReady", "false"); + if (d) { + this.linkElement = d; + this.linkEditMode = !0; + var c = d.getChildren(); + if (1 == c.count()) { + var g = c.getItem(0).getName(); + if ("img" == g || "input" == g)this.imageElement = c.getItem(0), "img" == this.imageElement.getName() ? this.imageEditMode = "img" : "input" == this.imageElement.getName() && (this.imageEditMode = "input") + } + "image" == j && + this.setupContent(2, d) + } + if (this.customImageElement)this.imageEditMode = "img", this.imageElement = this.customImageElement, delete this.customImageElement; else if (b && "img" == b.getName() && !b.data("cke-realelement") || b && "input" == b.getName() && "image" == b.getAttribute("type"))this.imageEditMode = b.getName(), this.imageElement = b; + this.imageEditMode ? (this.cleanImageElement = this.imageElement, this.imageElement = this.cleanImageElement.clone(!0, !0), this.setupContent(f, this.imageElement)) : this.imageElement = a.document.createElement("img"); + l(this, !0); + CKEDITOR.tools.trim(this.getValueOf("info", "txtUrl")) || (this.preview.removeAttribute("src"), this.preview.setStyle("display", "none")) + }, onOk: function () { + if (this.imageEditMode) { + var a = this.imageEditMode; + "image" == j && "input" == a && confirm(c.lang.image.button2Img) ? (this.imageElement = c.document.createElement("img"), this.imageElement.setAttribute("alt", ""), c.insertElement(this.imageElement)) : "image" != j && "img" == a && confirm(c.lang.image.img2Button) ? (this.imageElement = c.document.createElement("input"), + this.imageElement.setAttributes({type: "image", alt: ""}), c.insertElement(this.imageElement)) : (this.imageElement = this.cleanImageElement, delete this.cleanImageElement) + } else"image" == j ? this.imageElement = c.document.createElement("img") : (this.imageElement = c.document.createElement("input"), this.imageElement.setAttribute("type", "image")), this.imageElement.setAttribute("alt", ""); + this.linkEditMode || (this.linkElement = c.document.createElement("a")); + this.commitContent(f, this.imageElement); + this.commitContent(2, this.linkElement); + this.imageElement.getAttribute("style") || this.imageElement.removeAttribute("style"); + this.imageEditMode ? !this.linkEditMode && this.addLink ? (c.insertElement(this.linkElement), this.imageElement.appendTo(this.linkElement)) : this.linkEditMode && !this.addLink && (c.getSelection().selectElement(this.linkElement), c.insertElement(this.imageElement)) : this.addLink ? this.linkEditMode ? c.insertElement(this.imageElement) : (c.insertElement(this.linkElement), this.linkElement.append(this.imageElement, !1)) : c.insertElement(this.imageElement) + }, + onLoad: function () { + "image" != j && this.hidePage("Link"); + var a = this._.element.getDocument(); + this.getContentElement("info", "ratioLock") && (this.addFocusable(a.getById(u), 5), this.addFocusable(a.getById(p), 5)); + this.commitContent = r + }, onHide: function () { + this.preview && this.commitContent(8, this.preview); + this.originalElement && (this.originalElement.removeListener("load", q), this.originalElement.removeListener("error", h), this.originalElement.removeListener("abort", h), this.originalElement.remove(), this.originalElement = !1); + delete this.imageElement + }, contents: [ + {id: "info", label: c.lang.image.infoTab, accessKey: "I", elements: [ + {type: "vbox", padding: 0, children: [ + {type: "hbox", widths: ["280px", "110px"], align: "right", children: [ + {id: "txtUrl", type: "text", label: c.lang.common.url, required: !0, onChange: function () { + var a = this.getDialog(), b = this.getValue(); + if (0 < b.length) { + var a = this.getDialog(), d = a.originalElement; + a.preview.removeStyle("display"); + d.setCustomData("isReady", "false"); + var c = CKEDITOR.document.getById(m); + c && c.setStyle("display", + ""); + d.on("load", q, a); + d.on("error", h, a); + d.on("abort", h, a); + d.setAttribute("src", b); + t.setAttribute("src", b); + a.preview.setAttribute("src", t.$.src); + g(a) + } else a.preview && (a.preview.removeAttribute("src"), a.preview.setStyle("display", "none")) + }, setup: function (a, b) { + if (a == f) { + var d = b.data("cke-saved-src") || b.getAttribute("src"); + this.getDialog().dontResetSize = !0; + this.setValue(d); + this.setInitValue() + } + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) ? (b.data("cke-saved-src", this.getValue()), b.setAttribute("src", + this.getValue())) : 8 == a && (b.setAttribute("src", ""), b.removeAttribute("src")) + }, validate: CKEDITOR.dialog.validate.notEmpty(c.lang.image.urlMissing)}, + {type: "button", id: "browse", style: "display:inline-block;margin-top:10px;", align: "center", label: c.lang.common.browseServer, hidden: !0, filebrowser: "info:txtUrl"} + ]} + ]}, + {id: "txtAlt", type: "text", label: c.lang.image.alt, accessKey: "T", "default": "", onChange: function () { + g(this.getDialog()) + }, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("alt")) + }, commit: function (a, b) { + a == f ? (this.getValue() || this.isChanged()) && b.setAttribute("alt", this.getValue()) : 4 == a ? b.setAttribute("alt", this.getValue()) : 8 == a && b.removeAttribute("alt") + }}, + {type: "hbox", children: [ + {id: "basic", type: "vbox", children: [ + {type: "hbox", requiredContent: "img{width,height}", widths: ["50%", "50%"], children: [ + {type: "vbox", padding: 1, children: [ + {type: "text", width: "45px", id: "txtWidth", label: c.lang.common.width, onKeyUp: w, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: function () { + var a = this.getValue().match(v); + (a = !!(a && 0 !== parseInt(a[1], 10))) || alert(c.lang.common.invalidWidth); + return a + }, setup: y, commit: function (a, b, d) { + var c = this.getValue(); + a == f ? (c ? b.setStyle("width", CKEDITOR.tools.cssLength(c)) : b.removeStyle("width"), !d && b.removeAttribute("width")) : 4 == a ? c.match(k) ? b.setStyle("width", CKEDITOR.tools.cssLength(c)) : (a = this.getDialog().originalElement, "true" == a.getCustomData("isReady") && b.setStyle("width", a.$.width + "px")) : 8 == a && (b.removeAttribute("width"), b.removeStyle("width")) + }}, + {type: "text", id: "txtHeight", + width: "45px", label: c.lang.common.height, onKeyUp: w, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: function () { + var a = this.getValue().match(v); + (a = !!(a && 0 !== parseInt(a[1], 10))) || alert(c.lang.common.invalidHeight); + return a + }, setup: y, commit: function (a, b, d) { + var c = this.getValue(); + a == f ? (c ? b.setStyle("height", CKEDITOR.tools.cssLength(c)) : b.removeStyle("height"), !d && b.removeAttribute("height")) : 4 == a ? c.match(k) ? b.setStyle("height", CKEDITOR.tools.cssLength(c)) : (a = this.getDialog().originalElement, + "true" == a.getCustomData("isReady") && b.setStyle("height", a.$.height + "px")) : 8 == a && (b.removeAttribute("height"), b.removeStyle("height")) + }} + ]}, + {id: "ratioLock", type: "html", style: "margin-top:30px;width:40px;height:40px;", onLoad: function () { + var a = CKEDITOR.document.getById(u), b = CKEDITOR.document.getById(p); + a && (a.on("click", function (a) { + x(this); + a.data && a.data.preventDefault() + }, this.getDialog()), a.on("mouseover", function () { + this.addClass("cke_btn_over") + }, a), a.on("mouseout", function () { + this.removeClass("cke_btn_over") + }, + a)); + b && (b.on("click", function (a) { + l(this); + var b = this.originalElement, c = this.getValueOf("info", "txtWidth"); + if (b.getCustomData("isReady") == "true" && c) { + b = b.$.height / b.$.width * c; + if (!isNaN(b)) { + this.setValueOf("info", "txtHeight", Math.round(b)); + g(this) + } + } + a.data && a.data.preventDefault() + }, this.getDialog()), b.on("mouseover", function () { + this.addClass("cke_btn_over") + }, b), b.on("mouseout", function () { + this.removeClass("cke_btn_over") + }, b)) + }, html: '"} + ]}, + {type: "vbox", padding: 1, children: [ + {type: "text", id: "txtBorder", requiredContent: "img{border-width}", width: "60px", label: c.lang.image.border, "default": "", onKeyUp: function () { + g(this.getDialog()) + }, + onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder), setup: function (a, b) { + if (a == f) { + var d; + d = (d = (d = b.getStyle("border-width")) && d.match(/^(\d+px)(?: \1 \1 \1)?$/)) && parseInt(d[1], 10); + isNaN(parseInt(d, 10)) && (d = b.getAttribute("border")); + this.setValue(d) + } + }, commit: function (a, b, d) { + var c = parseInt(this.getValue(), 10); + a == f || 4 == a ? (isNaN(c) ? !c && this.isChanged() && b.removeStyle("border") : (b.setStyle("border-width", CKEDITOR.tools.cssLength(c)), + b.setStyle("border-style", "solid")), !d && a == f && b.removeAttribute("border")) : 8 == a && (b.removeAttribute("border"), b.removeStyle("border-width"), b.removeStyle("border-style"), b.removeStyle("border-color")) + }}, + {type: "text", id: "txtHSpace", requiredContent: "img{margin-left,margin-right}", width: "60px", label: c.lang.image.hSpace, "default": "", onKeyUp: function () { + g(this.getDialog()) + }, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace), + setup: function (a, b) { + if (a == f) { + var d, c; + d = b.getStyle("margin-left"); + c = b.getStyle("margin-right"); + d = d && d.match(o); + c = c && c.match(o); + d = parseInt(d, 10); + c = parseInt(c, 10); + d = d == c && d; + isNaN(parseInt(d, 10)) && (d = b.getAttribute("hspace")); + this.setValue(d) + } + }, commit: function (a, b, c) { + var e = parseInt(this.getValue(), 10); + a == f || 4 == a ? (isNaN(e) ? !e && this.isChanged() && (b.removeStyle("margin-left"), b.removeStyle("margin-right")) : (b.setStyle("margin-left", CKEDITOR.tools.cssLength(e)), b.setStyle("margin-right", CKEDITOR.tools.cssLength(e))), + !c && a == f && b.removeAttribute("hspace")) : 8 == a && (b.removeAttribute("hspace"), b.removeStyle("margin-left"), b.removeStyle("margin-right")) + }}, + {type: "text", id: "txtVSpace", requiredContent: "img{margin-top,margin-bottom}", width: "60px", label: c.lang.image.vSpace, "default": "", onKeyUp: function () { + g(this.getDialog()) + }, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace), setup: function (a, b) { + if (a == f) { + var c, e; + c = b.getStyle("margin-top"); + e = + b.getStyle("margin-bottom"); + c = c && c.match(o); + e = e && e.match(o); + c = parseInt(c, 10); + e = parseInt(e, 10); + c = c == e && c; + isNaN(parseInt(c, 10)) && (c = b.getAttribute("vspace")); + this.setValue(c) + } + }, commit: function (a, b, c) { + var e = parseInt(this.getValue(), 10); + a == f || 4 == a ? (isNaN(e) ? !e && this.isChanged() && (b.removeStyle("margin-top"), b.removeStyle("margin-bottom")) : (b.setStyle("margin-top", CKEDITOR.tools.cssLength(e)), b.setStyle("margin-bottom", CKEDITOR.tools.cssLength(e))), !c && a == f && b.removeAttribute("vspace")) : 8 == a && (b.removeAttribute("vspace"), + b.removeStyle("margin-top"), b.removeStyle("margin-bottom")) + }}, + {id: "cmbAlign", requiredContent: "img{float}", type: "select", widths: ["35%", "65%"], style: "width:90px", label: c.lang.common.align, "default": "", items: [ + [c.lang.common.notSet, ""], + [c.lang.common.alignLeft, "left"], + [c.lang.common.alignRight, "right"] + ], onChange: function () { + g(this.getDialog()); + i.call(this, "advanced:txtdlgGenStyle") + }, setup: function (a, b) { + if (a == f) { + var c = b.getStyle("float"); + switch (c) { + case "inherit": + case "none": + c = "" + } + !c && (c = (b.getAttribute("align") || + "").toLowerCase()); + this.setValue(c) + } + }, commit: function (a, b, c) { + var e = this.getValue(); + if (a == f || 4 == a) { + if (e ? b.setStyle("float", e) : b.removeStyle("float"), !c && a == f)switch (e = (b.getAttribute("align") || "").toLowerCase(), e) { + case "left": + case "right": + b.removeAttribute("align") + } + } else 8 == a && b.removeStyle("float") + }} + ]} + ]}, + {type: "vbox", height: "250px", children: [ + {type: "html", id: "htmlPreview", style: "width:95%;", html: "
" + CKEDITOR.tools.htmlEncode(c.lang.common.preview) + '
' + (c.config.image_previewText || "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.") + + "
"} + ]} + ]} + ]}, + {id: "Link", requiredContent: "a[href]", label: c.lang.image.linkTab, padding: 0, elements: [ + {id: "txtUrl", type: "text", label: c.lang.common.url, style: "width: 100%", "default": "", setup: function (a, b) { + if (2 == a) { + var c = b.data("cke-saved-href"); + c || (c = b.getAttribute("href")); + this.setValue(c) + } + }, commit: function (a, b) { + if (2 == a && (this.getValue() || this.isChanged())) { + var d = decodeURI(this.getValue()); + b.data("cke-saved-href", d); + b.setAttribute("href", d); + if (this.getValue() || !c.config.image_removeLinkByEmptyURL)this.getDialog().addLink = !0 + } + }}, + {type: "button", id: "browse", filebrowser: {action: "Browse", target: "Link:txtUrl", url: c.config.filebrowserImageBrowseLinkUrl}, style: "float:right", hidden: !0, label: c.lang.common.browseServer}, + {id: "cmbTarget", type: "select", requiredContent: "a[target]", label: c.lang.common.target, "default": "", items: [ + [c.lang.common.notSet, ""], + [c.lang.common.targetNew, "_blank"], + [c.lang.common.targetTop, "_top"], + [c.lang.common.targetSelf, "_self"], + [c.lang.common.targetParent, "_parent"] + ], setup: function (a, b) { + 2 == a && this.setValue(b.getAttribute("target") || + "") + }, commit: function (a, b) { + 2 == a && (this.getValue() || this.isChanged()) && b.setAttribute("target", this.getValue()) + }} + ]}, + {id: "Upload", hidden: !0, filebrowser: "uploadButton", label: c.lang.image.upload, elements: [ + {type: "file", id: "upload", label: c.lang.image.btnUpload, style: "height:40px", size: 38}, + {type: "fileButton", id: "uploadButton", filebrowser: "info:txtUrl", label: c.lang.image.btnUpload, "for": ["Upload", "upload"]} + ]}, + {id: "advanced", label: c.lang.common.advancedTab, elements: [ + {type: "hbox", widths: ["50%", "25%", "25%"], + children: [ + {type: "text", id: "linkId", requiredContent: "img[id]", label: c.lang.common.id, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("id")) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("id", this.getValue()) + }}, + {id: "cmbLangDir", type: "select", requiredContent: "img[dir]", style: "width : 100px;", label: c.lang.common.langDir, "default": "", items: [ + [c.lang.common.notSet, ""], + [c.lang.common.langDirLtr, "ltr"], + [c.lang.common.langDirRtl, "rtl"] + ], setup: function (a, b) { + a == f && this.setValue(b.getAttribute("dir")) + }, + commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("dir", this.getValue()) + }}, + {type: "text", id: "txtLangCode", requiredContent: "img[lang]", label: c.lang.common.langCode, "default": "", setup: function (a, b) { + a == f && this.setValue(b.getAttribute("lang")) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("lang", this.getValue()) + }} + ]}, + {type: "text", id: "txtGenLongDescr", requiredContent: "img[longdesc]", label: c.lang.common.longDescr, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("longDesc")) + }, + commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("longDesc", this.getValue()) + }}, + {type: "hbox", widths: ["50%", "50%"], children: [ + {type: "text", id: "txtGenClass", requiredContent: "img(cke-xyz)", label: c.lang.common.cssClass, "default": "", setup: function (a, b) { + a == f && this.setValue(b.getAttribute("class")) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("class", this.getValue()) + }}, + {type: "text", id: "txtGenTitle", requiredContent: "img[title]", label: c.lang.common.advisoryTitle, + "default": "", onChange: function () { + g(this.getDialog()) + }, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("title")) + }, commit: function (a, b) { + a == f ? (this.getValue() || this.isChanged()) && b.setAttribute("title", this.getValue()) : 4 == a ? b.setAttribute("title", this.getValue()) : 8 == a && b.removeAttribute("title") + }} + ]}, + {type: "text", id: "txtdlgGenStyle", requiredContent: "img{cke-xyz}", label: c.lang.common.cssStyle, validate: CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle), "default": "", setup: function (a, b) { + if (a == f) { + var c = b.getAttribute("style"); + !c && b.$.style.cssText && (c = b.$.style.cssText); + this.setValue(c); + var e = b.$.style.height, c = b.$.style.width, e = (e ? e : "").match(k), c = (c ? c : "").match(k); + this.attributesInStyle = {height: !!e, width: !!c} + } + }, onChange: function () { + i.call(this, "info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight".split(" ")); + g(this) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("style", this.getValue()) + }} + ]} + ]} + }; + CKEDITOR.dialog.add("image", function (c) { + return r(c, "image") + }); + CKEDITOR.dialog.add("imagebutton", function (c) { + return r(c, "imagebutton") + }) +})(); \ No newline at end of file