diff --git a/app/assets/javascripts/controllers/sanitize_and_render_controller.js b/app/assets/javascripts/controllers/sanitize_and_render_controller.js new file mode 100644 index 000000000000..733a7260a1b0 --- /dev/null +++ b/app/assets/javascripts/controllers/sanitize_and_render_controller.js @@ -0,0 +1,6 @@ +angular.module('sanitizeRender', ['ngSanitize']) + .controller('SanitizeAndRenderController', ['$scope', '$sce', function($scope, $sce) { + $scope.sanitizeRenderHtml = function(str) { + return $sce.trustAsHtml(decodeURI(str)); + }; + }]); diff --git a/app/views/service/_svcs_show.html.haml b/app/views/service/_svcs_show.html.haml index 9b59f691794c..36c5211cbe95 100644 --- a/app/views/service/_svcs_show.html.haml +++ b/app/views/service/_svcs_show.html.haml @@ -1,40 +1,45 @@ -#services_tab - %ul.nav.nav-tabs - = miq_tab_header("details") do - = _("Details") - - if @record.type == "ServiceAnsiblePlaybook" - - job = @record.try(:job, "Retirement") - = miq_tab_header("provisioning") do - = _("Provisioning") - - if job - = miq_tab_header("retirement") do - = _("Retirement") - .tab-content - = miq_tab_content("details", 'default', :class => 'cm-tab') do - = render :partial => "layouts/textual_groups_generic" - .row - .col-md-12.col-lg-6 - %h3 - = _('VMs') - - if @view - = render :partial => "layouts/gtl", :locals => {:view => @view} - - if @record.type == "ServiceAnsiblePlaybook" - = miq_tab_content("provisioning", 'default', :class => 'cm-tab') do - = render :partial => "layouts/textual_groups_tabs", :locals => {:textual_group_list => textual_provisioning_group_list} - - if @job && @job.try(:raw_stdout) - = render :partial => "layouts/textual_code_mirror", - :locals => {:label => _('Standard Output'), - :value => @job.raw_stdout.force_encoding("UTF-8"), - :mode => "htmlmixed", - :text_area_id => "provision_output"} - - if job - = miq_tab_content("retirement", 'default', :class => 'cm-tab') do - = render :partial => "layouts/textual_groups_tabs", :locals => {:textual_group_list => textual_retirement_group_list} - = render :partial => "layouts/textual_code_mirror", - :locals => {:label => _('Standard Output'), - :value => job.raw_stdout.force_encoding("UTF-8"), - :mode => "htmlmixed", - :text_area_id => "retirement_output"} +#service_details{'ng-controller'=>"SanitizeAndRenderController as vm"} + #services_tab + %ul.nav.nav-tabs + = miq_tab_header("details") do + = _("Details") + - if @record.type == "ServiceAnsiblePlaybook" + - job = @record.try(:job, "Retirement") + = miq_tab_header("provisioning") do + = _("Provisioning") + - if job + = miq_tab_header("retirement") do + = _("Retirement") + .tab-content + = miq_tab_content("details", 'default', :class => 'cm-tab') do + = render :partial => "layouts/textual_groups_generic" + .row + .col-md-12.col-lg-6 + %h3 + = _('VMs') + - if @view + = render :partial => "layouts/gtl", :locals => {:view => @view} + - if @record.type == "ServiceAnsiblePlaybook" + = miq_tab_content("provisioning", 'default', :class => 'cm-tab') do + = render :partial => "layouts/textual_groups_tabs", :locals => {:textual_group_list => textual_provisioning_group_list} + - if @job && @job.try(:raw_stdout) + %h3 + = _('Standard Output') + .form-horizontal.static + .form-group + .col-md-9 + - htm = @job.raw_stdout('html').gsub('"', '\"').gsub("'", "\\\\'") + %div{'ng-bind-html'=>"sanitizeRenderHtml('#{htm}')"} + - if job + = miq_tab_content("retirement", 'default', :class => 'cm-tab') do + = render :partial => "layouts/textual_groups_tabs", :locals => {:textual_group_list => textual_retirement_group_list} + %h3 + = _('Standard Output') + .form-horizontal.static + .form-group + .col-md-9 + - htm = job.raw_stdout('html').gsub('"', '\"').gsub("'", "\\\\'") + %div{'ng-bind-html'=>"sanitizeRenderHtml('#{htm}')"} :javascript miq_tabs_init('#services_tab'); - miq_refresh_code_mirror(); + miq_bootstrap('#service_details', 'sanitizeRender');