Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var s$ = {};
- var snail = function(config) {
- s$.config = config;
- var _readyCallbacks = [];
- $(function() {
- $.each(_readyCallbacks, function(i, func) {
- func();
- });
- });
- s$.ready = function(func) {
- _readyCallbacks.unshift(func);
- }
- s$.bind = function(path, event, callback) {
- $('div[data-path="' + path + '"]').live(event, callback);
- }
- s$.data = (new function() {
- function _request() {
- }
- function _updateIndex() {
- }
- this.each = function() {
- }
- this.load = function() {
- }
- }());
- s$.page = (new function() {
- var self = this;
- var _stack = [];
- function _getPage(path) {
- return $('div[data-path="' + path + '"]');
- }
- function _pushStack(path) {
- _stack.push(path);
- }
- function _popStack() {
- return _stack.pop();
- }
- this.show = function(path) {
- function _show(path) {
- $('div[data-role=page]').hide();
- var $page = _getPage(path);
- $page.trigger('pageshow');
- $page.show();
- }
- $page = _getPage(path);
- if($page.length) {
- if(!$page.attr('data-loaded')) {
- $page.trigger('pageload');
- $page.attr('data-loaded', true);
- }
- _show(path);
- } else {
- $.ajax({
- url: 'app/' + _splitPath(path).file + '.html',
- dataType: 'html',
- cache: false,
- success: function(html) {
- $('body').append(html);
- $.each($('div:not([data-path])'), function(i, p) {
- $(p).attr('data-path', _splitPath(path).file + '/' + $(p).attr('data-name'));
- });
- $page = _getPage(path);
- $page.trigger('pageload');
- $page.attr('data-loaded', true);
- _show(path);
- }
- });
- }
- }
- s$.ready(function() {
- $('a').live('click', function(e) {
- e.preventDefault();
- var action = $(this).attr('data-action');
- if(action) {
- if(action === 'back') {
- _popStack();
- self.show(_stack[_stack.length-1]);
- }
- } else {
- var path = $(this).attr('href');
- self.show(path);
- _pushStack(path);
- }
- });
- self.show(s$.config.root);
- _pushStack(s$.config.root);
- });
- }());
- function _splitPath(path) {
- var parts = path.split('/');
- var file;
- var target;
- if(parts.length === 2) {
- file = parts[0];
- target = parts[1];
- } else {
- target = parts[0];
- }
- return {file: file, target: target};
- }
- }
Add Comment
Please, Sign In to add comment