Foundry Access Library

by justjohn

HTML

<link rel="stylesheet" href="http://phpfoundry.com:9999/rc/sencha-touch-1.1.0/resources/css/sencha-touch.css">
<script src="http://phpfoundry.com:9999/rc/sencha-touch-1.1.0/sencha-touch-debug.js"></script>
<script src="http://rc.foundryjs.com/FoundryJS.Ajax.js"></script>
<script src="http://rc.foundryjs.com/FoundryJS.Foundry.js"></script>

CSS

.x-html {
    padding:0;
}
.project_overview {
    background:#ddd;
    border-bottom:1px solid #333;
    padding:5px 5px 15px;
}
.project_page {
    padding:5px;
}
.project_overview h3 {
    margin:5px 0 0 5px;
    font-size: 1.5em;
}
.project_overview h4 {
    margin:0;
    font-size: 1.1em;
    color: #999;
}

JavaScript

Ext.regModel('Access', {
    fields: [
        'id', // DONT TOUCH
        'key',
        'username'
    ],
    proxy: {
        type: 'localstorage',
        id  : 'access'
    }
});
var accessStore = new Ext.data.Store({
    model  : 'Access'
});
accessStore.load();

Ext.regModel('Project', {
    fields: [
        'name', 'key', 'category', 'description', 'admingroup', 'devgroup', 'usergroup','visibility', 'groupvisibility', 'page', 'id'
    ],
    proxy: {
        type: 'localstorage',
        id  : 'project'
    }
});

var store = new Ext.data.Store({
    model  : 'Project',
    sorters: [
        {
            property : 'category',
            direction: 'ASC'
        },
        {
            property : 'name',
            direction: 'ASC'
        }
    ],
    getGroupString : function(record) {
        return record.get('category');
    }
});
store.load();

hub = new FoundryJS.Foundry({
    api_base: "https://hub.phpfoundry.com/api/1/",
    api_key: "1234",
    ajaxCallback: FoundryJS.Ajax.ExtJS
});

var access = accessStore.getAt(0);

console.log("access token", access);
if (access != undefined) {
    console.log("Loading from stored access token: ", access.data);
    access_token = access.data.key;
    
    hub.setAccessToken(access_token);
    loadProjects();
} else {
    hub.authorizeUser({
        username: "test", 
        password: "password",
        success: function(access_token) {
            hub.setAccessToken(access_token);
            accessStore.removeAll();
            accessStore.sync();
            
            access = {
                key: access_token,
                username: this.username
            };
            accessStore.insert(0, access);
            accessStore.sync();
            console.log(access);

            loadProjects();
        },
        error: function(data) {
            console.log(data);
            alert("auth failure");
        }
    });
}

function loadProjects() {
    hub.projects({
        success:...