mirror of
https://github.com/lxsang/antd-web-apps
synced 2024-11-20 02:18:20 +01:00
apps
This commit is contained in:
parent
692d437c67
commit
0817dd6079
@ -1,10 +1,23 @@
|
|||||||
BUILDDIR = ../build/apps
|
BUILDDIR = ../build/apps
|
||||||
|
|
||||||
copyfiles = ./*
|
copyfiles = router.lua controllers logs views models
|
||||||
|
coffees = assets/coffee/bootstrap.coffee \
|
||||||
|
assets/coffee/BaseObject.coffee \
|
||||||
|
assets/coffee/APIManager.coffee \
|
||||||
|
assets/coffee/MarkOn.coffee \
|
||||||
|
|
||||||
main:
|
|
||||||
- mkdir $(BUILDDIR)
|
main: js
|
||||||
|
- mkdir -p $(BUILDDIR)/assets
|
||||||
cp -rf $(copyfiles) $(BUILDDIR)
|
cp -rf $(copyfiles) $(BUILDDIR)
|
||||||
|
cp -r assets/css assets/scripts $(BUILDDIR)/assets
|
||||||
- cd $(BUILDDIR) && ln -s ../grs ./rst
|
- cd $(BUILDDIR) && ln -s ../grs ./rst
|
||||||
|
|
||||||
|
js:
|
||||||
|
- rm assets/scripts/main.js
|
||||||
|
for f in $(coffees); do (cat "$${f}"; echo) >> assets/scripts/main.coffee; done
|
||||||
|
coffee --compile assets/scripts/main.coffee
|
||||||
|
- rm assets/scripts/main.coffee
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BUILDDIR)/*
|
rm -rf $(BUILDDIR)/*
|
22
apps/assets/coffee/APIManager.coffee
Normal file
22
apps/assets/coffee/APIManager.coffee
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
class APIManager extends window.classes.BaseObject
|
||||||
|
constructor: () ->
|
||||||
|
super "APIManager"
|
||||||
|
|
||||||
|
init: (cname) ->
|
||||||
|
console.log(cname)
|
||||||
|
@ready()
|
||||||
|
.then () ->
|
||||||
|
if mobilecheck()
|
||||||
|
mobileConsole.init()
|
||||||
|
# load the class
|
||||||
|
return if not cname or cname is ""
|
||||||
|
return console.error("Cannot find class ", cname) unless window.classes[cname]
|
||||||
|
(new window.classes[cname]).init()
|
||||||
|
.catch ( m, s ) ->
|
||||||
|
console.error(m, s)
|
||||||
|
|
||||||
|
APIManager.dependencies = [
|
||||||
|
"/assets/scripts/mobile_console.js"
|
||||||
|
]
|
||||||
|
|
||||||
|
makeclass "APIManager", APIManager
|
25
apps/assets/coffee/BaseObject.coffee
Normal file
25
apps/assets/coffee/BaseObject.coffee
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
class BaseObject
|
||||||
|
constructor: (@name) ->
|
||||||
|
|
||||||
|
ready: () ->
|
||||||
|
me = @
|
||||||
|
return new Promise (r, e) ->
|
||||||
|
me.resolveDep()
|
||||||
|
.then () -> r()
|
||||||
|
.catch (m, s) -> e(m, s)
|
||||||
|
|
||||||
|
resolveDep: () ->
|
||||||
|
me = @
|
||||||
|
return new Promise (r, e) ->
|
||||||
|
dep = window.classes[me.name].dependencies
|
||||||
|
r() unless dep
|
||||||
|
|
||||||
|
fn = (l, i) ->
|
||||||
|
return r() if i >= dep.length
|
||||||
|
require(l[i])
|
||||||
|
.then () -> fn(l, i + 1)
|
||||||
|
.catch (m, s) -> e(m, s)
|
||||||
|
fn dep, 0
|
||||||
|
|
||||||
|
makeclass "BaseObject", BaseObject
|
||||||
|
|
17
apps/assets/coffee/MarkOn.coffee
Normal file
17
apps/assets/coffee/MarkOn.coffee
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
class MarkOn extends window.classes.BaseObject
|
||||||
|
constructor: (@id) ->
|
||||||
|
super "MarkOn"
|
||||||
|
|
||||||
|
init: () ->
|
||||||
|
me = @
|
||||||
|
@ready()
|
||||||
|
.then () ->
|
||||||
|
me.editor = new SimpleMDE { element: $(me.id)[0] }
|
||||||
|
.catch (m, s) ->
|
||||||
|
console.error(m, s)
|
||||||
|
|
||||||
|
MarkOn.dependencies = [
|
||||||
|
"/rst/gscripts/mde/simplemde.min.js"
|
||||||
|
]
|
||||||
|
|
||||||
|
makeclass "MarkOn", MarkOn
|
19
apps/assets/coffee/bootstrap.coffee
Normal file
19
apps/assets/coffee/bootstrap.coffee
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
window.classes = {}
|
||||||
|
window.libraries = {}
|
||||||
|
window.myuri = "/"
|
||||||
|
window.mobilecheck = () ->
|
||||||
|
if navigator.userAgent.match(/Android/i) or navigator.userAgent.match(/webOS/i) or navigator.userAgent.match(/iPhone/i) or navigator.userAgent.match(/iPad/i) or navigator.userAgent.match(/iPod/i) or navigator.userAgent.match(/BlackBerry/i) or navigator.userAgent.match(/Windows Phone/i)
|
||||||
|
return true
|
||||||
|
return false
|
||||||
|
|
||||||
|
window.makeclass = (n, o) -> window.classes[n] = o
|
||||||
|
|
||||||
|
window.require = (lib) ->
|
||||||
|
return new Promise (r, e) ->
|
||||||
|
return r() if window.libraries[lib]
|
||||||
|
$.getScript window.myuri + lib
|
||||||
|
.done (d) ->
|
||||||
|
window.libraries[lib] = true
|
||||||
|
r()
|
||||||
|
.fail (m, s) ->
|
||||||
|
e(m, s)
|
7
apps/assets/css/style.css
Normal file
7
apps/assets/css/style.css
Normal file
File diff suppressed because one or more lines are too long
145
apps/assets/scripts/main.js
Normal file
145
apps/assets/scripts/main.js
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
// Generated by CoffeeScript 1.9.3
|
||||||
|
(function() {
|
||||||
|
var APIManager, BaseObject, MarkOn,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
window.classes = {};
|
||||||
|
|
||||||
|
window.libraries = {};
|
||||||
|
|
||||||
|
window.myuri = "/";
|
||||||
|
|
||||||
|
window.mobilecheck = function() {
|
||||||
|
if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
window.makeclass = function(n, o) {
|
||||||
|
return window.classes[n] = o;
|
||||||
|
};
|
||||||
|
|
||||||
|
window.require = function(lib) {
|
||||||
|
return new Promise(function(r, e) {
|
||||||
|
if (window.libraries[lib]) {
|
||||||
|
return r();
|
||||||
|
}
|
||||||
|
return $.getScript(window.myuri + lib).done(function(d) {
|
||||||
|
window.libraries[lib] = true;
|
||||||
|
return r();
|
||||||
|
}).fail(function(m, s) {
|
||||||
|
return e(m, s);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
BaseObject = (function() {
|
||||||
|
function BaseObject(name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
BaseObject.prototype.ready = function() {
|
||||||
|
var me;
|
||||||
|
me = this;
|
||||||
|
return new Promise(function(r, e) {
|
||||||
|
return me.resolveDep().then(function() {
|
||||||
|
return r();
|
||||||
|
})["catch"](function(m, s) {
|
||||||
|
return e(m, s);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
BaseObject.prototype.resolveDep = function() {
|
||||||
|
var me;
|
||||||
|
me = this;
|
||||||
|
return new Promise(function(r, e) {
|
||||||
|
var dep, fn;
|
||||||
|
dep = window.classes[me.name].dependencies;
|
||||||
|
if (!dep) {
|
||||||
|
r();
|
||||||
|
}
|
||||||
|
fn = function(l, i) {
|
||||||
|
if (i >= dep.length) {
|
||||||
|
return r();
|
||||||
|
}
|
||||||
|
return require(l[i]).then(function() {
|
||||||
|
return fn(l, i + 1);
|
||||||
|
})["catch"](function(m, s) {
|
||||||
|
return e(m, s);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return fn(dep, 0);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return BaseObject;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
makeclass("BaseObject", BaseObject);
|
||||||
|
|
||||||
|
APIManager = (function(superClass) {
|
||||||
|
extend(APIManager, superClass);
|
||||||
|
|
||||||
|
function APIManager() {
|
||||||
|
APIManager.__super__.constructor.call(this, "APIManager");
|
||||||
|
}
|
||||||
|
|
||||||
|
APIManager.prototype.init = function(cname) {
|
||||||
|
console.log(cname);
|
||||||
|
return this.ready().then(function() {
|
||||||
|
if (mobilecheck()) {
|
||||||
|
mobileConsole.init();
|
||||||
|
}
|
||||||
|
if (!cname || cname === "") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!window.classes[cname]) {
|
||||||
|
return console.error("Cannot find class ", cname);
|
||||||
|
}
|
||||||
|
return (new window.classes[cname]).init();
|
||||||
|
})["catch"](function(m, s) {
|
||||||
|
return console.error(m, s);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return APIManager;
|
||||||
|
|
||||||
|
})(window.classes.BaseObject);
|
||||||
|
|
||||||
|
APIManager.dependencies = ["/assets/scripts/mobile_console.js"];
|
||||||
|
|
||||||
|
makeclass("APIManager", APIManager);
|
||||||
|
|
||||||
|
MarkOn = (function(superClass) {
|
||||||
|
extend(MarkOn, superClass);
|
||||||
|
|
||||||
|
function MarkOn(id) {
|
||||||
|
this.id = id;
|
||||||
|
MarkOn.__super__.constructor.call(this, "MarkOn");
|
||||||
|
}
|
||||||
|
|
||||||
|
MarkOn.prototype.init = function() {
|
||||||
|
var me;
|
||||||
|
me = this;
|
||||||
|
return this.ready().then(function() {
|
||||||
|
return me.editor = new SimpleMDE({
|
||||||
|
element: $(me.id)[0]
|
||||||
|
});
|
||||||
|
})["catch"](function(m, s) {
|
||||||
|
return console.error(m, s);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return MarkOn;
|
||||||
|
|
||||||
|
})(window.classes.BaseObject);
|
||||||
|
|
||||||
|
MarkOn.dependencies = ["/rst/gscripts/mde/simplemde.min.js"];
|
||||||
|
|
||||||
|
makeclass("MarkOn", MarkOn);
|
||||||
|
|
||||||
|
}).call(this);
|
1325
apps/assets/scripts/mobile_console.js
Normal file
1325
apps/assets/scripts/mobile_console.js
Normal file
File diff suppressed because it is too large
Load Diff
12
apps/controllers/IndexController.lua
Normal file
12
apps/controllers/IndexController.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
BaseController:subclass("IndexController", {
|
||||||
|
registry = {}
|
||||||
|
})
|
||||||
|
|
||||||
|
function IndexController:index( ... )
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function IndexController:actionnotfound(...)
|
||||||
|
self.template:setView("index")
|
||||||
|
return self:index(table.unpack({...}))
|
||||||
|
end
|
13
apps/controllers/MarkOnController.lua
Normal file
13
apps/controllers/MarkOnController.lua
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
BaseController:subclass("MarkOnController", {
|
||||||
|
registry = {}
|
||||||
|
})
|
||||||
|
|
||||||
|
function MarkOnController:index( ... )
|
||||||
|
self.template:set("jsclass", "MarkOn")
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function MarkOnController:actionnotfound(...)
|
||||||
|
self.template:setView("index")
|
||||||
|
return self:index(table.unpack({...}))
|
||||||
|
end
|
@ -1,35 +0,0 @@
|
|||||||
BaseController:subclass("PostController", {
|
|
||||||
registry = {},
|
|
||||||
models = { "post" }
|
|
||||||
})
|
|
||||||
|
|
||||||
function PostController:index(...)
|
|
||||||
local args = {...}
|
|
||||||
self:setSession("postsession", "Huehuehue")
|
|
||||||
self.template:set("post", self.post:findAll())
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
function PostController:edit(...)
|
|
||||||
if self:getSession("postsession") then
|
|
||||||
self.template:set("auth", true)
|
|
||||||
else
|
|
||||||
self.template:set("auth", false)
|
|
||||||
end
|
|
||||||
self:switchLayout("admin")
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
function PostController:add(...)
|
|
||||||
local args = {...}
|
|
||||||
local m = {
|
|
||||||
cid = tonumber(args[1]),
|
|
||||||
content = "This is the content for #cid="..args[1]
|
|
||||||
}
|
|
||||||
if(self.post:create(m)) then
|
|
||||||
self.template:set("status", "Post created")
|
|
||||||
else
|
|
||||||
self.template:set("status", "Cannot create post")
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
@ -1,8 +0,0 @@
|
|||||||
BaseModel:subclass("PostModel", {
|
|
||||||
registry = {},
|
|
||||||
name = "post",
|
|
||||||
fields = {
|
|
||||||
cid = "NUMERIC",
|
|
||||||
content = "TEXT"
|
|
||||||
}
|
|
||||||
})
|
|
@ -5,7 +5,7 @@
|
|||||||
-- some global variables
|
-- some global variables
|
||||||
DIR_SEP = "/"
|
DIR_SEP = "/"
|
||||||
WWW_ROOT = "/opt/www/htdocs/apps"
|
WWW_ROOT = "/opt/www/htdocs/apps"
|
||||||
HTTP_ROOT = "https://apps.localhost:9195/"
|
HTTP_ROOT = "https://10.1.10.84:9195/apps"
|
||||||
-- class path: path.to.class
|
-- class path: path.to.class
|
||||||
BASE_FRW = ""
|
BASE_FRW = ""
|
||||||
-- class path: path.to.class
|
-- class path: path.to.class
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
<?lua
|
|
||||||
local args = {...}
|
|
||||||
echo("Admin pages<br />")
|
|
||||||
local views = args[1]
|
|
||||||
for k, v in pairs(views) do
|
|
||||||
echo(k.." -> ")
|
|
||||||
v:render()
|
|
||||||
echo("<br/>")
|
|
||||||
end
|
|
||||||
--views.__main__:render()
|
|
||||||
?>
|
|
@ -1,5 +0,0 @@
|
|||||||
<?lua
|
|
||||||
local args = {...}
|
|
||||||
echo("edit page <br/>")
|
|
||||||
echo(JSON.encode(args))
|
|
||||||
?>
|
|
1
apps/views/default/MarkOn/index.ls
Normal file
1
apps/views/default/MarkOn/index.ls
Normal file
@ -0,0 +1 @@
|
|||||||
|
<textarea id = "editor"></textarea>
|
3
apps/views/default/index/index.ls
Normal file
3
apps/views/default/index/index.ls
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<h1>
|
||||||
|
Site under construction
|
||||||
|
</h1>
|
@ -1,26 +1,34 @@
|
|||||||
|
<?lua
|
||||||
|
local args = {...}
|
||||||
|
local views = args[1]
|
||||||
|
local main = views.__main__
|
||||||
|
local jsclass = main:get("jsclass")
|
||||||
|
if jsclass == nil then jsclass = "" end
|
||||||
|
?>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Application pages</title>
|
<title>Application pages</title>
|
||||||
<!--link rel="stylesheet" type="text/css" href="<?=HTTP_ROOT?>/asset/get/grs/ubuntu-regular.css" />
|
<link rel="stylesheet" type="text/css" href="<?=HTTP_ROOT?>/rst/ubuntu-regular.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="<?=HTTP_ROOT?>/asset/get/style.css" />
|
<link rel="stylesheet" type="text/css" href="<?=HTTP_ROOT?>/assets/css/style.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="<?=HTTP_ROOT?>/asset/get/rst/font-awesome.css" />
|
<link rel="stylesheet" type="text/css" href="<?=HTTP_ROOT?>/rst/font-awesome.css" />
|
||||||
<script type="text/javascript" src="<?=HTTP_ROOT?>/asset/get/rst/gscripts/riot.min.js"> </script>
|
<!--script type="text/javascript" src="<?=HTTP_ROOT?>/rst/gscripts/riot.min.js"> </script>
|
||||||
<script type="text/javascript" src="<?=HTTP_ROOT?>/asset/get/rst/resources/antos_tags.js"></script>
|
<script type="text/javascript" src="<?=HTTP_ROOT?>/rst/resources/antos_tags.js"></script-->
|
||||||
<script type="text/javascript" src="<?=HTTP_ROOT?>/asset/get/rst/gscripts/jquery-3.2.1.min.js"> </script>
|
<script type="text/javascript" src="<?=HTTP_ROOT?>/rst/gscripts/jquery-3.2.1.min.js"> </script>
|
||||||
<script type="text/javascript" src="<?=HTTP_ROOT?>/asset/get/rst/main.js"></script>
|
<script type="text/javascript" src="<?=HTTP_ROOT?>/assets/scripts/main.js"></script>
|
||||||
<script type="text/javascript" src="<?=HTTP_ROOT?>/asset/get/rst/gscripts/showdown.min.js"></script-->
|
<!--script type="text/javascript" src="<?=HTTP_ROOT?>/rst/gscripts/showdown.min.js"></script-->
|
||||||
|
<script>
|
||||||
|
$(window).on('load', function(){
|
||||||
|
window.myuri = '<?=HTTP_ROOT?>';
|
||||||
|
var manager = new window.classes.APIManager();
|
||||||
|
manager.init('<?=jsclass?>');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="desktop">
|
<div id="desktop">
|
||||||
<?lua
|
<?lua
|
||||||
local args = {...}
|
|
||||||
local views = args[1]
|
main:render()
|
||||||
for k, v in pairs(views) do
|
|
||||||
echo(k.." -> ")
|
|
||||||
v:render()
|
|
||||||
echo("<br/>")
|
|
||||||
end
|
|
||||||
--views.__main__:render()
|
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
<?lua
|
|
||||||
local args = {...}
|
|
||||||
echo("add page : <br/>")
|
|
||||||
echo(JSON.encode(args))
|
|
||||||
?>
|
|
@ -1,3 +0,0 @@
|
|||||||
<?lua
|
|
||||||
echo("<h1>Public file of edit action</h1><br/>")
|
|
||||||
?>
|
|
@ -1,4 +0,0 @@
|
|||||||
<?lua
|
|
||||||
local args = {...}
|
|
||||||
echo(JSON.encode(args))
|
|
||||||
?>
|
|
@ -21,7 +21,7 @@ function Router:infer(url)
|
|||||||
-- a is controller name
|
-- a is controller name
|
||||||
-- b is action
|
-- b is action
|
||||||
-- c,d,e is parameters
|
-- c,d,e is parameters
|
||||||
-- if user dont provice the url, try to infer it
|
-- if user dont provide the url, try to infer it
|
||||||
-- from the REQUEST
|
-- from the REQUEST
|
||||||
url = url or REQUEST.query.r
|
url = url or REQUEST.query.r
|
||||||
url = std.trim(url, "/")
|
url = std.trim(url, "/")
|
||||||
@ -84,6 +84,7 @@ function Router:delegate()
|
|||||||
data.controller.main = true
|
data.controller.main = true
|
||||||
views.__main__ = self:call(data)
|
views.__main__ = self:call(data)
|
||||||
if not views.__main__ then
|
if not views.__main__ then
|
||||||
|
--self:error("No main template is set")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
-- get all visible routes
|
-- get all visible routes
|
||||||
|
Loading…
Reference in New Issue
Block a user