plunker.js 2.2 KB

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