/* * Copyright (c) 2012-2014 Kaarle Ritvanen * See LICENSE file for license details */ requirejs.config({ baseUrl: "lib", paths: {acf2: ".."}, shim: { underscore: {exports: "_"}, "jquery-bbq": {deps: ["jquery"]}, "jquery-blockui": {deps: ["jquery"]}, "jquery-ui/core": {deps: ["jquery"]}, "jquery-ui/mouse": {deps: ["jquery-ui/widget"]}, "jquery-ui/sortable": {deps: ["jquery-ui/core", "jquery-ui/mouse"]}, "jquery-ui/widget": {deps: ["jquery"]}, } }); require( [ "acf2/dom", "acf2/error", "acf2/path", "acf2/statusbar", "acf2/transaction", "acf2/type", "acf2/widget/inline", "jquery", "underscore", "acf2/layout/stacked", "acf2/layout/tabular", "jquery-bbq", "jquery-blockui" ], function(dom, formatError, pth, statusBar, txnMgr, type, Inline, $, _) { $("#login").submit(function() { $.ajax("/login", { type: "POST", data: JSON.stringify({ username: $("#username").val(), password: $("#password").val() }) }).done(function(data, status, xhr) { txnMgr = txnMgr( xhr.getResponseHeader("X-ACF-Auth-Token"), xhr.getResponseHeader("X-ACF-Save-Required") == "1" ); function redirect(path) { $.bbq.pushState("#" + path); } function renderObject(path, data) { path = path || $.param.fragment(); return ( data ? $.Deferred().resolve(data) : txnMgr.query(path) ).done(function(data) { var layout = data.meta.widget; var name = pth.split(path).pop(); (layout ? require("acf2/layout/" + layout) : Inline).extend({ createEl: function() { return $("#content").empty(); }, wrap: function() { return this.el; }, requestData: function(value, meta) { return $.Deferred().resolve(data, data.meta); } }).new( { get: function(name) { return path; }, status: function(name) { return null; }, match: function(filter) { return true; } }, name, {}, 0, true, false ); }).fail(function() { var comps = pth.split(path); comps.pop(); comps.unshift("/"); redirect(pth.join.apply(undefined, comps)); }); }; $("#content").on("reload", function(event, txnValid) { statusBar.validationReady(txnValid); renderObject(); event.stopPropagation(); }); function render() { var path = $.param.fragment(); function renderMenu(target, path, current, selectFirst) { var def = $.Deferred(); txnMgr.query(path).done(function(data) { if (data.meta.type != "model") { def.reject(data); return; } var tnFields = []; var extraFields = false; _.each(data.meta.fields, function(field) { if (!field.visible) return; if (!type.isTreeNode(field)) extraFields = true; else if (data.data[field.name]) tnFields.push(field); }); if (!tnFields.length) { def.reject(data); return; } function addItem(path, ui_name, status, current) { var el = $("
").text("Logged out")); }); }); statusBar.reset(); $("#content").empty(); $(window).bind("hashchange", render); redirect("/"); }).fail(function() { statusBar.setError("Login failed", "login"); }); return false; }); $("#username").focus(); } );