Matteo Scandolo | 46b5610 | 2015-12-16 14:23:08 -0800 | [diff] [blame] | 1 | angular.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 | }); |