Action

Regular Post

Posted by TheChels.uk, Last update about 12 hours ago

UPDATES

about 12 hours ago

Updated description

show all updates...

about 12 hours ago

Updated description

about 14 hours ago

Typo

about 14 hours ago

Typo

About

Takes a draft with Jekyll style front matter and creates a file in working copy in the _posts/year/ folder using the date and title to create the filename (yyyy-mm-dd-title.md)

Tip

If you find this useful and want to support me, you can tip at ko-fi.com/thechelsuk

Steps

  • script

    /*
     * @title: Jekyll formatting -> Working Copy
     * @author: Mat B
     * @email: Mat@thechels.uk
     * @notes:
     * creation behind the scenes.
     */
    var credential = Credential.create("Jekyll path", "Jekyll path");
    credential.addTextField("jekyll-repo", "Jekyll repo name");
    credential.addTextField("jekyll-path", "Path to your jekyll posts directory");
    credential.addTextField("working-copy-key", "Working Copy x-url-callback key");
    
    var result = credential.authorize();
    
    if (!result) {
    	alert("Failed to obtain required Jekyll data. Please check it and try again.");
    	context.cancel("Failed to obtain required Jekyll data. Please check it and try again.");
    } else {
        if ((typeof(credential.getValue("jekyll-repo")) === 'undefined' || String(credential.getValue("jekyll-repo")).length === 0) ||
            (typeof(credential.getValue("jekyll-path")) === 'undefined' || String(credential.getValue("jekyll-path")).length === 0) ||
            (typeof(credential.getValue("working-copy-key")) === 'undefined' || String(credential.getValue("working-copy-key")).length === 0)) {
    		alert("Repo values are invalid. Please rerun action and enter token again");
    		credential.forget();
    		context.cancel("Repo values were invalid.");
    	} else {
            var newDraft = '',
            content = draft.content,
            prompt = Prompt.create(),
            date = new Date(),
    	now = new Date().toISOString().substr(0, 10);
    
            prompt.title = 'Jekyll post data';
            prompt.message = 'Enter Jekyll post data';
            prompt.isCancellable = true;
    
            if (draft.title.length === 0 || typeof(draft.title.length) === 'undefined') {
                prompt.addTextField('title', 'Title', '');
            } else {
                prompt.addTextField('title', 'Title', draft.title);
            };
    	
            prompt.addTextField('date', 'Date', now);
           
            prompt.addButton('Ok');
            prompt.show();
    
            if (prompt.buttonPressed == "Ok") {
                    titleArr = prompt.fieldValues['title'].split(' '),
                    fileName = now + '-';
    
                // modify the filename to be yyyy-mm-dd-title.md
                titleArr.map((t) => fileName += `${t}-`);
                fileName = fileName.replace(/-$/, '');
                fileName += '.md';
    
                // remove the file name from the draft
                content = content.replace(prompt.fieldValues['title'], '').trim();
                
                // assemble post frontmatter
                newDraft += '---\n';
                newDraft += '\n';
                newDraft += 'layout: post\n'
                newDraft += 'date: ' + prompt.fieldValues['date'] + '\n';
    
                newDraft += 'title: ' + prompt.fieldValues['title'] + '\n';
                newDraft += '\n';
                newDraft += '---\n';
                newDraft += '\n';
                newDraft += content;
    
                // set draft content
                editor.setText(newDraft);
    
                // send to working copy
                var year = new Date().getFullYear().toString(),
                    baseURL = 'working-copy://x-callback-url/write/?key=' +
                              credential.getValue("working-copy-key") +
                              '&repo=' + encodeURI(credential.getValue("jekyll-repo")) +
                              '&path=' + encodeURI(credential.getValue("jekyll-path")) + '/' +  year + '/' +
                              encodeURI(fileName.toLowerCase()) +
                              '&text=' +
                              encodeURI(newDraft),
                    cb = CallbackURL.create();
                cb.baseURL = baseURL;
                cb.open();
            };
        }
    };
    

Options

  • After Success Archive
    Notification Info
    Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.