Ace Editor in PHP Web App

Dave Bergschneider picture Dave Bergschneider · Jul 12, 2011 · Viewed 8.6k times · Source

I am making a small web app that allows users to submit html, css and javascript content via Ace Editor. In this editor, echoing stored content into the editor is simply enough however I cannot find anyway to submit a users input to the database. I can see there is a textarea generated by the JavaScript however I'm not exactly sure what it is doing, how to get to it or if I should be looking for something else entirely.

I'm primarily looking for a field or something that I can use to have php submit into the db.

Answer

Paul Beusterien picture Paul Beusterien · Jul 12, 2011

The contents of the edit window are available with the session getValue method. For example, here is an extension to the standard ACE demo for save file:

saveFile = function() {
    var contents = env.editor.getSession().getValue();

    $.post("write.php", 
            {contents: contents },
            function() {
                    // add error checking
                    alert('successful save');
            }
    );
};

I added the saveFile call to the already existing "Fake Save" that is in demo.js. I replace the alert with code like this:

// Fake-Save, works from the editor and the command line.
canon.addCommand({
    name: "save",
    bindKey: {
        win: "Ctrl-S",
        mac: "Command-S",
        sender: "editor|cli"
    },
    exec: function() {
        saveFile();
    }
});

The php file is just one line:

$r = file_put_contents("foo.txt", $_POST["contents"]) or die("can't open file");