blob: 1e586108ab5fa5cf8d50d6c2679b947fc5139fb8 [file] [log] [blame]
Matteo Scandolo7cd88ba2015-12-16 14:23:08 -08001angular.module('plunker', [])
2
3 .factory('plunkGenerator', function ($document) {
4
5 return function (ngVersion, bsVersion, version, module, content) {
6
7 var form = angular.element('<form style="display: none;" method="post" action="http://plnkr.co/edit/?p=preview" target="_blank"></form>');
8 var addField = function (name, value) {
9 var input = angular.element('<input type="hidden" name="' + name + '">');
10 input.attr('value', value);
11 form.append(input);
12 };
13
14 var indexContent = function (content, version) {
15 return '<!doctype html>\n' +
16 '<html ng-app="ui.bootstrap.demo">\n' +
17 ' <head>\n' +
18 ' <script src="//ajax.googleapis.com/ajax/libs/angularjs/'+ngVersion+'/angular.js"></script>\n' +
19 ' <script src="//ajax.googleapis.com/ajax/libs/angularjs/'+ngVersion+'/angular-animate.js"></script>\n' +
20 ' <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-'+version+'.js"></script>\n' +
21 ' <script src="example.js"></script>\n' +
22 ' <link href="//netdna.bootstrapcdn.com/bootstrap/'+bsVersion+'/css/bootstrap.min.css" rel="stylesheet">\n' +
23 ' </head>\n' +
24 ' <body>\n\n' +
25 content + '\n' +
26 ' </body>\n' +
27 '</html>\n';
28 };
29
30 var scriptContent = function(content) {
31 return "angular.module('ui.bootstrap.demo', ['ngAnimate', 'ui.bootstrap']);" + "\n" + content;
32 };
33
34 addField('description', 'http://angular-ui.github.io/bootstrap/');
35 addField('files[index.html]', indexContent(content.markup, version));
36 addField('files[example.js]', scriptContent(content.javascript));
37
38 $document.find('body').append(form);
39 form[0].submit();
40 form.remove();
41 };
42 })
43
44 .controller('PlunkerCtrl', function ($scope, plunkGenerator) {
45
46 $scope.content = {};
47
48 $scope.edit = function (ngVersion, bsVersion, version, module) {
49 plunkGenerator(ngVersion, bsVersion, version, module, $scope.content);
50 };
51 })
52
53 .directive('plunkerContent', function () {
54 return {
55 link:function (scope, element, attrs) {
56 scope.content[attrs.plunkerContent] = element.text().trim();
57 }
58 }
59 });