diff --git a/config/examples/example.html b/config/examples/example.html index 4ef6d52fac..16b86ba499 100644 --- a/config/examples/example.html +++ b/config/examples/example.html @@ -59,14 +59,16 @@
Copy - Edit + Edit
-
+ + + - +
<!DOCTYPE html>
 <html>
diff --git a/examples/resources/common.js b/examples/resources/common.js
index 46233307e2..1fbe678761 100644
--- a/examples/resources/common.js
+++ b/examples/resources/common.js
@@ -10,11 +10,40 @@
     });
   }
 
-  var fiddleButton = document.getElementById('jsfiddle-button');
-  if (fiddleButton) {
-    fiddleButton.onclick = function(event) {
+  var codepenButton = document.getElementById('codepen-button');
+  if (codepenButton) {
+    codepenButton.onclick = function(event) {
       event.preventDefault();
-      document.getElementById('jsfiddle-form').submit();
+      var form = document.getElementById('codepen-form');
+
+      // Doc : https://blog.codepen.io/documentation/api/prefill/
+
+      var resources = form.resources.value.split(',');
+
+      var data = {
+        title: form.title.value,
+        description: form.description.value,
+        layout: 'left',
+        html: form.html.value,
+        css: form.css.value,
+        js: form.js.value,
+        css_external: resources.filter(function(resource) {
+          return resource.lastIndexOf('.css') === resource.length - 4;
+        }).join(';'),
+        js_external: resources.filter(function(resource) {
+          return resource.lastIndexOf('.js') === resource.length - 3;
+        }).join(';')
+      };
+
+      // binary flags to display html, css, js and/or console tabs
+      data.editors = '' + Number(data.html.length > 0) +
+          Number(data.css.length > 0) +
+          Number(data.js.length > 0) +
+          Number(data.js.indexOf('console') > 0);
+
+      form.data.value = JSON.stringify(data);
+
+      form.submit();
     };
   }
 
diff --git a/examples/resources/layout.css b/examples/resources/layout.css
index e04323098e..021776f301 100644
--- a/examples/resources/layout.css
+++ b/examples/resources/layout.css
@@ -106,7 +106,7 @@ pre[class*="language-"] {
   cursor: pointer;
 }
 
-#jsfiddle-button {
+#codepen-button {
   text-decoration: none;
   cursor: pointer;
 }
diff --git a/tasks/build-examples.js b/tasks/build-examples.js
index 096583e278..cd89992937 100644
--- a/tasks/build-examples.js
+++ b/tasks/build-examples.js
@@ -56,7 +56,7 @@ function getLinkToApiHtml(requires) {
  * example HTML file, this adds metadata for related js and css resources. When
  * these files are run through the example template, the extra metadata is used
  * to show the complete example source in the textarea and submit the parts to
- * jsFiddle.
+ * CodePen.
  *
  * @param {Object} files The file lookup provided by Metalsmith.  Property names
  *     are file paths relative to the source directory.  The file objects
@@ -111,13 +111,13 @@ function augmentExamples(files, metalsmith, done) {
       if (file.resources) {
         var resources = [];
         var remoteResources = [];
-        var fiddleResources = [];
+        var codePenResources = [];
         for (var i = 0, ii = file.resources.length; i < ii; ++i) {
           var resource = file.resources[i];
           var remoteResource = resource.indexOf('//') === -1 ?
               'https://openlayers.org/en/v' + pkg.version + '/examples/' +
                   resource : resource;
-          fiddleResources[i] = remoteResource;
+          codePenResources[i] = remoteResource;
           if (isJsRegEx.test(resource)) {
             resources[i] = '';
             remoteResources[i] = '