What is meta? ×
Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 131 Stack Exchange communities.

Trying to post to Stack Overflow I get a "Your post appears to contain code that is not properly formatted as code."

I believe all code in my post is properly formatted; I tried various changes without success. Any help would be appreciated. The verbatim source of the query is:

<!-- language-all: lang-js -->
Trying to create a [tag:Sencha-Touch-2] app syncing to a [tag:Node.js] server; code below. 
The server uses another port on the same IP, so this is [tag:cross-domain].

- Using a [tag:JSONP] Proxy as shown can read data from the server but breaks when writing: 
*"JSONP proxies can only be used to read data"*. 
I guess the JSONP Proxy writer config is just to write the query and isn't used to write sync (save).

- Sencha docs state an **[tag:Ajax]** proxy can't go cross-domain, even though a
Cross-domain Ext.Ajax/Ext.data.Connection is discussed in [the Sencha forums](http://www.sencha.com/forum/showthread.php?17691-Cross-domain-Ext.Ajax-Ext.data.Connection).

- I have found several ways to do a (cross-domain) JSON post (e.g. http://stackoverflow.com/questions/3881779/mobile-application-using-sencha-touch-json-request-generates-syntax-error)
but don't know how to integrate this as a writer in a proxy which syncs my store.
http://stackoverflow.com/questions/5620248/sencha-touch-scripttagproxy-url-for-create-update-functionality
seems to offer pointers, but this is ajax and apparently unsuited for cross domain.

I've been reading this forum and elsewhere for a couple of days, but I seem to be stuck. Any help would be much appreciated.

Node.js and restify server
==========================
*(The server uses Mongoose to talk to a MongoDB back-end (not shown))*


    var server = restify.createServer({
      name: 'Server',
      key: fs.readFileSync(root+'/'+'privatekey.pem'),
      certificate: fs.readFileSync(root+'/'+'certificate.pem')
    });

    server.use(restify.bodyParser());
    server.use(restify.queryParser());

    function getMessages(req, res, next) {
      Model.find(function (err,data) {
        res.setHeader('Content-Type', 'text/javascript;charset=UTF-8');
        res.send(req.query["callback"] + '({"records":' +  JSON.stringify(data) + '});');
      });
    }

    function postMessage(req, res, next) {//not yet tested
      var obj = new Model(); 
      obj.name = req.params.name;
      obj.description = req.params.description;
      obj.date = new Date();
      obj.save(function (err) {
            if (err) throw err;
            console.log('Saved.');
            res.send('Saved.');
      });
    }

    server.post(/^\/atapp/, postMessage);
    server.get(/^\/atapp/, getMessages);

    server.listen(port, ipaddr, function() {
        console.log('%s: secure Node server started on %s:%d ...', Date(Date.now()), ipaddr, port);
    });


Sencha Touch 2
==============
Model
-----


    Ext.define('ATApp.model.User', {
        extend: 'Ext.data.Model',
        config: {
            fields: [
                { name: 'name',  type: 'string' },
                { name: 'description', type: 'string' },
                { name: 'date',  type: 'date' },
                { name: '_id' }
    ...


Store
-----


    Ext.define('ATApp.store.Data', {
        extend: 'Ext.data.Store',
        requires: [
            'ATApp.model.User',
            'Ext.data.proxy.JsonP'
        ],
        config: {
            autoLoad: true,
            model: 'ATApp.model.User',
            storeId: 'Data',
            proxy: {
                type: 'jsonp',  
                model: 'ATApp.model.User',
                url: 'https://192.168.2.45:13017/atapp',
                reader: {
                    type: 'json',
                    idProperty: '_id',
                    rootProperty: 'records',
                    useSimpleAccessors: true
                },
                writer: {
                    type: 'json',
                    allowSingle: false,
                    encode: true,
                    idProperty: '_id',
                    rootProperty: 'records'
    ...


Controller
----------

    onNewDataRecord: function (view) {
                            console.log('newDataRecord');
                            var now = new Date();
                            var record = Ext.create('ATApp.model.User', {
                                date: now,
                                name: '..',
                                description: '..'
                                });
                            var store = Ext.data.StoreManager.lookup('Data')
                            record.setProxy(store.getProxy());
                            store.add(record);
                            this.activateEditor(record);
                        },
    ...
share|improve this question
2  
There's quite a bit of non-text stuff in the description part. Try removing all the [tag] things (they're really not necessary, just put the properly capitalized product names in plain text), put "Ext.Ajax/Ext.data.Connection" in backticks, and maybe, move the URLs out of line. –  Mat Sep 23 '12 at 7:24
3  
Try to move the <!-- language-all: lang-js --> just above the actual code blocks. And be sure to leave a blank above and below that. Or just is out altogether; I guess the JavaScript tag is present anyway? (As an aside: I don't think the [tag:xx] is helpful at all; just noise for the reader, I feel. Also, you might want to unindent the last block a bit.) –  Arjan Sep 23 '12 at 7:33
    
@Mat, @Arjan: I've tried your suggestions without luck. They make sense anyway so thanks all the same. (Leaving out <!-- language-all: lang-js --> altogether turns off syntax highlighting in the preview) –  Pum Walters Sep 23 '12 at 7:57
2  
@Pum to have a "global" syntax highlight just add proper tag, don't worry about the preview worst case you can edit later and fix this. –  Shadow Wizard Sep 23 '12 at 8:03
2  
Can't answer my own question (no reputation), so I'll add is as comment: Solved; the offending line was *(The server uses ...)* between the first header and the actual code. –  Pum Walters Sep 23 '12 at 8:07

You must log in to answer this question.

Browse other questions tagged .