aboutsummaryrefslogtreecommitdiffstats
path: root/docs/src/templates/js/docs.js
diff options
context:
space:
mode:
authorShyam Seshadri2012-10-25 20:57:15 +0530
committerIgor Minar2012-10-31 12:54:52 -0700
commit7c67b2fb6afbc18f3593c64a5f339f04f9003f3c (patch)
tree10712128e89ec475a55623583711f8e156348e1c /docs/src/templates/js/docs.js
parent3c9b39ff528ec8cb554f055323b7be52a3e2bcf7 (diff)
downloadangular.js-7c67b2fb6afbc18f3593c64a5f339f04f9003f3c.tar.bz2
feat(docs): add plunkr support
Add option to edit source in Angular Docs in Plunkr in addition to JsFiddle
Diffstat (limited to 'docs/src/templates/js/docs.js')
-rw-r--r--docs/src/templates/js/docs.js58
1 files changed, 54 insertions, 4 deletions
diff --git a/docs/src/templates/js/docs.js b/docs/src/templates/js/docs.js
index 2fd50e75..58be9df9 100644
--- a/docs/src/templates/js/docs.js
+++ b/docs/src/templates/js/docs.js
@@ -30,9 +30,16 @@ docsApp.directive.code = function() {
docsApp.directive.sourceEdit = function(getEmbeddedTemplate) {
return {
- template: '<button ng-click="fiddle($event)" class="btn btn-primary pull-right"><i class="icon-pencil icon-white"></i> Edit</button>\n',
+ template: '<div class="btn-group pull-right">' +
+ '<a class="btn dropdown-toggle btn-primary" data-toggle="dropdown" href>' +
+ ' <i class="icon-pencil icon-white"></i> Edit<span class="caret"></span>' +
+ '</a>' +
+ '<ul class="dropdown-menu">' +
+ ' <li><a ng-click="plunkr($event)" href="">In Plunkr</a></li>' +
+ ' <li><a ng-click="fiddle($event)" href="">In JsFiddle</a></li>' +
+ '</ul>',
scope: true,
- controller: function($scope, $attrs, openJsFiddle) {
+ controller: function($scope, $attrs, openJsFiddle, openPlunkr) {
var sources = {
module: $attrs.sourceEdit,
deps: read($attrs.sourceEditDeps),
@@ -45,7 +52,11 @@ docsApp.directive.sourceEdit = function(getEmbeddedTemplate) {
$scope.fiddle = function(e) {
e.stopPropagation();
openJsFiddle(sources);
- }
+ };
+ $scope.plunkr = function(e) {
+ e.stopPropagation();
+ openPlunkr(sources);
+ };
}
}
@@ -145,8 +156,47 @@ docsApp.serviceFactory.formPostData = function($document) {
};
};
+docsApp.serviceFactory.openPlunkr = function(templateMerge, formPostData, angularUrls) {
+ return function(content) {
+ var allFiles = [].concat(content.js, content.css, content.html);
+ var indexHtmlContent = '<!doctype html>\n' +
+ '<html ng-app>\n' +
+ ' <head>\n' +
+ ' <script src="{{angularJSUrl}}"></script>\n' +
+ '{{scriptDeps}}\n' +
+ ' </head>\n' +
+ ' <body>\n\n' +
+ '{{indexContents}}' +
+ '\n\n </body>\n' +
+ '</html>\n';
+ var scriptDeps = '';
+ angular.forEach(content.deps, function(file) {
+ if (file.name !== 'angular.js') {
+ scriptDeps += ' <script src="' + file.name + '"></script>\n'
+ }
+ });
+ indexProp = {
+ angularJSUrl: angularUrls['angular.js'],
+ scriptDeps: scriptDeps,
+ indexContents: content.html[0].content
+ };
+ var postData = {};
+ angular.forEach(allFiles, function(file, index) {
+ if (file.content && file.name != 'index.html') {
+ postData['files[' + file.name + ']'] = file.content;
+ }
+ });
+
+ postData['files[index.html]'] = templateMerge(indexHtmlContent, indexProp);
+
+ postData.description = 'AngularJS Example Plunkr';
+
+ formPostData('http://plnkr.co/edit/?p=preview', postData);
+ };
+};
+
+docsApp.serviceFactory.openJsFiddle = function(templateMerge, formPostData, angularUrls) {
-docsApp.serviceFactory.openJsFiddle = function(templateMerge, getEmbeddedTemplate, formPostData, angularUrls) {
var HTML = '<div ng-app=\"{{module}}\">\n{{html:2}}</div>',
CSS = '</style> <!-- Ugly Hack due to jsFiddle issue: http://goo.gl/BUfGZ --> \n' +
'{{head:0}}<style>\n​.ng-invalid { border: 1px solid red; }​\n{{css}}',