phphtmldownloadeditorreal-time

Real time html editor for download


I like solution in this post Real-Time Html editor with Javascript or editor on this site. Just simple solution without extra functionalities.

How to edit the code to add SAVE/LOAD option? Is there somethin like "downloadable little CMS" to play with HTML/CSS? I want upload it to my hosting, easy access from home/phone/work, I do not want use online services like codepen or Liveweave.

thanks!

EDIT: Due to comments, I will clarify my question. I have some hosting, mySite.com. There is folder with this magic editor, mySite.com/xxx where i have some sample images and some basic css etc.. Im learning html/css, so I developing some basic html temapltes. HTML editor I linked is just fine. Only I need add 3 buttons, NEW/OPEN/SAVE which make new html file/can open it in live editor/and save it. AND I WANT HAVE THIS EASY SOLUTION ON MY OWN HOSTING.


Solution

  • Ok, I'm done. Here is my final solution.

    Index.php

    <?php
    $fileName = $_POST['project']?? 'index.html';
    $fileContent = fopen("./projects/" . $fileName, "r") or die("Unable to open file!");
    if (isset($_POST['text'])) {
        file_put_contents("./projects/" . $fileName, $_POST["text"]);
    }
    ?>
    
    <!DOCTYPE html><html lang="cs"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1">
    <style> 
    .error {background-color:red; color:white;}
    .dib {display:inline-block;}
    </style>
    </head><body>
    
    <?php 
    echo "<form class='dib' method='POST'><select name='project'>";
    $path    = './projects/';
    $files = scandir($path);
    $files = array_diff(scandir($path), array('.', '..'));
    foreach($files as $file){
      echo "<option" . (($fileName == $file)?' selected':'') . ">" . $file . "</option>";
    } 
    echo "</select> <input type='submit' value='Load!'></form>";
    ?>
    
    <input type='submit' form='content' value='Save!'> 
    
        <form class="dib" style="float:right;" action="fileUploadScript.php" method="post" enctype="multipart/form-data">
            Upload a File:
            <input type="file" name="the_file" id="fileToUpload">
            <input type="submit" name="submit" value="Start Upload">
        </form>
    
    <p style='margin:auto; text-align:center; width:20%; text-transform:uppercase; font-weight: bold;'><?php echo $fileName?></p>
    
    <br>
    <form id="content" method="POST">
    <textarea name="text" rows="40" id="pure" style="width:100%;margin-top:8px;" wrap="off">
    <?php echo fread($fileContent,filesize("./projects/" . $fileName)); ?> 
    </textarea><br>
    <input type="hidden" name="project" value="<?php echo $fileName; ?>">
    </form>
    <hr>
    <div id="compiled"></div>
    </body>
    </html>
    
     <?php
    fclose($fileContent);
    ?> 
    
    <script type="text/javascript">
    var h = document.getElementById("pure");
    var compiled = document.getElementById("compiled");
    h.onkeyup = function() {
      compiled.innerHTML = h.value;
      pure.classList.toggle("error",
        compiled.innerHTML !== h.value); 
    };
    h.onkeyup();
    </script>
    

    fileUploadScript.php

    <?php
        $currentDirectory = getcwd();
        $uploadDirectory = "/projects/";
    
        $errors = []; // Store errors here
    
        $fileExtensionsAllowed = ['jpeg','jpg','txt','bmp','html','htm','rar','zip','7z','doc','docx','xls','xlsx','ppt','pptx','pdf','pptm','png','gif']; // These will be the only file extensions allowed 
    
        $fileNamee = $_FILES['the_file']['name'];
        $fileSize = $_FILES['the_file']['size'];
        $fileTmpName  = $_FILES['the_file']['tmp_name'];
        $fileType = $_FILES['the_file']['type'];
        $tmp = explode('.',$fileNamee);
        $fileExtension = strtolower(end($tmp));
    
        $uploadPath = $currentDirectory . $uploadDirectory . basename($fileNamee); 
    
        if (isset($_POST['submit'])) {
    
          if (! in_array($fileExtension,$fileExtensionsAllowed)) {
            $errors[] = "This file extension is not allowed. Please upload a JPEG or PNG file";
          }
    
          if ($fileSize > 4000000) {
            $errors[] = "File exceeds maximum size (4MB)";
          }
    
          if (empty($errors)) {
            $didUpload = move_uploaded_file($fileTmpName, $uploadPath);
    
            if ($didUpload) {
              echo "The file " . basename($fileNamee) . " has been uploaded";
            } else {
              echo "An error occurred. Please contact the administrator.";
            }
          } else {
            foreach ($errors as $error) {
              echo $error . "These are the errors" . "\n";
            }
          }
    
        }
    ?>
    

    After you save these two files, dont forget make new folder named "projects" and default file called "index.html" in this folder..