bypass sanitization for markdown

This commit is contained in:
Roman Hotsiy 2016-06-22 12:45:03 +03:00
parent b65370c8ac
commit 43a0872530
10 changed files with 14 additions and 10 deletions

View File

@ -1,6 +1,6 @@
<div>
<h1 class="api-info-header">{{data.title}} ({{data.version}})</h1>
<p *ngIf="data.description" innerHtml="{{data.description | marked}}"> </p>
<p *ngIf="data.description" [innerHtml]="data.description | marked"> </p>
<p>
<!-- TODO: create separate components for contact and license ? -->
<span *ngIf="data.contact"> Contact:

View File

@ -32,6 +32,7 @@ export class JsonSchemaLazy implements OnDestroy, AfterViewInit {
}
_loadAfterSelf() {
// FIXME: get rid of DynamicComponentLoader as it is deprecated
return this.dcl.loadNextToLocation(JsonSchema, this.viewRef).then((compRef) => {
this.initComponent(compRef);
if (compRef.changeDetectorRef) {

View File

@ -7,7 +7,7 @@
<a *ngFor="let tag of data.methodInfo.tags" attr.href="#{{tag}}"> {{tag}} </a>
</div>
<p *ngIf="data.methodInfo.description" class="method-description"
innerHtml="{{data.methodInfo.description | marked}}">
[innerHtml]="data.methodInfo.description | marked">
</p>
<params-list pointer="{{pointer}}/parameters"> </params-list>
<responses-list pointer="{{pointer}}/responses"> </responses-list>

View File

@ -2,7 +2,7 @@
<div class="tag" *ngFor="let tag of data.tags">
<div class="tag-info" [attr.tag]="tag.name">
<h1 class="sharable-header"> <a class="share-link" href="#tag/{{tag.name | encodeURIComponent}}"></a>{{tag.name}} </h1>
<p *ngIf="tag.description" innerHtml="{{ tag.description | marked }}"> </p>
<p *ngIf="tag.description" [innerHtml]="tag.description | marked"> </p>
</div>
<method *ngFor="let method of tag.methods" [pointer]="method.pointer" [attr.pointer]="method.pointer"
[attr.tag]="method.tag" [tag]="method.tag" [attr.operation-id]="method.operationId"></method>

View File

@ -20,7 +20,7 @@
<span *ngFor="let enumItem of param.enum" class="enum-value {{enumItem.type}}"> {{enumItem.val | json}} </span>
</div>
</div>
<div class="param-description" innerHtml="{{param.description | marked}}"></div>
<div class="param-description" [innerHtml]="param.description | marked"></div>
</div>
</div>
</div>
@ -29,7 +29,7 @@
<div *ngIf="data.bodyParam">
<h5 class="param-list-header" *ngIf="data.bodyParam"> Request Body </h5>
<div class="body-param-description" innerHtml="{{data.bodyParam.description | marked}}"></div>
<div class="body-param-description" [innerHtml]="data.bodyParam.description | marked"></div>
<div>
<br>
<json-schema-lazy [isRequestSchema]="true" [auto]="true" pointer="{{data.bodyParam.pointer}}/schema">

View File

@ -160,7 +160,8 @@ footer {
pre {
font-family: Courier, monospace;
white-space: pre-wrap;
background-color: rgba(38,50,56,0.04);
background-color: #263238;
color: white;
padding: 12px 14px 15px 14px;
overflow-x: auto;
line-height: normal;

View File

@ -5,6 +5,6 @@
<schema-sample [pointer]="data.schemaPointer" [skipReadOnly]="true"> </schema-sample>
</tab>
<tab *ngFor="let sample of data.samples" [tabTitle]="sample.lang">
<pre innerHtml="{{sample.source | prism:sample.lang}}"></pre>
<pre [innerHtml]="sample.source | prism:sample.lang"></pre>
</tab>
</tabs>

View File

@ -9,7 +9,7 @@
<div class="header-name"> {{header.name}} </div>
<div class="header-type"> {{header.type}} </div>
<div *ngIf="header.default" class="header-default"> Default: {{header.default}} </div>
<div class="header-description" innerHtml="{{header.description | marked}}"> </div>
<div class="header-description" [innerHtml]="header.description | marked"> </div>
</div>
</div>
<header *ngIf="response.headers">

View File

@ -1,5 +1,5 @@
<div class="snippet">
<!-- in case sample is not available for some reason -->
<pre *ngIf="data.sample == undefined"> Sample unavailable </pre>
<pre innerHtml="{{data.sample | jsonFormatter}}"></pre>
<pre [innerHtml]="data.sample | jsonFormatter"></pre>
</div>

View File

@ -1,15 +1,17 @@
'use strict';
import { Pipe, PipeTransform } from '@angular/core';
import { isBlank } from '@angular/core/src/facade/lang';
import { DomSanitizationService } from '@angular/platform-browser';
var level = 1;
const COLLAPSE_LEVEL = 2;
@Pipe({ name: 'jsonFormatter' })
export class JsonFormatter implements PipeTransform {
constructor(private sanitizer: DomSanitizationService) {}
transform(value) {
if (isBlank(value)) return value;
return jsonToHTML(value);
return this.sanitizer.bypassSecurityTrustHtml(jsonToHTML(value));
}
}