reset
This commit is contained in:
parent
a0c1cab2ba
commit
874a8c636f
15
.gitignore
vendored
15
.gitignore
vendored
@ -1,15 +0,0 @@
|
||||
# Folders
|
||||
.git
|
||||
node_modules
|
||||
bower_components
|
||||
dist/css/*
|
||||
!dist/css/.gitkeep
|
||||
dist/html/*
|
||||
!dist/html/.gitkeep
|
||||
|
||||
|
||||
# Files
|
||||
index.html
|
||||
config.pug
|
||||
issues.md
|
||||
oidc-client-preprod-config.json
|
12
.gitmodules
vendored
12
.gitmodules
vendored
@ -1,12 +0,0 @@
|
||||
[submodule "dist/lib/webcomponentsjs"]
|
||||
path = dist/lib/webcomponentsjs
|
||||
url = https://github.com/webcomponents/webcomponentsjs
|
||||
[submodule "dist/lib/sib-core"]
|
||||
path = dist/lib/sib-core
|
||||
url = git@git.happy-dev.fr:startinblox/sib-core.git
|
||||
[submodule "dist/lib/sib-router"]
|
||||
path = dist/lib/sib-router
|
||||
url = git@git.happy-dev.fr:startinblox/sib-router.git
|
||||
[submodule "dist/lib/sib-chat"]
|
||||
path = dist/lib/sib-chat
|
||||
url = git@git.happy-dev.fr:startinblox/sib-chat.git
|
@ -1,8 +0,0 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
RewriteRule \. - [L]
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule . /index.html [L]
|
||||
</IfModule>
|
49
Makefile
49
Makefile
@ -1,49 +0,0 @@
|
||||
default: build
|
||||
|
||||
config.pug:
|
||||
@cp -n config-sample.pug config.pug
|
||||
|
||||
node_modules:
|
||||
npm install
|
||||
|
||||
install: node_modules
|
||||
git submodule update --init --recursive
|
||||
|
||||
update:
|
||||
cd dist/lib/sib-chat; \
|
||||
git pull origin master
|
||||
cd dist/lib/sib-core; \
|
||||
git pull origin master
|
||||
cd dist/lib/sib-router; \
|
||||
git pull origin master
|
||||
|
||||
dist/css/hd-app.css: $(wildcard src/scss/*.scss)
|
||||
npx node-sass src/scss/main.scss dist/css/hd-app.css --source-map true || touch dist/css/hd-app.css
|
||||
|
||||
index.html: config.pug index.pug $(wildcard src/pug/*.pug)
|
||||
npx pug --pretty index.pug || touch index.html
|
||||
|
||||
build: index.html dist/css/hd-app.css
|
||||
|
||||
prod:
|
||||
npx pug index.pug
|
||||
npx node-sass src/scss/main.scss dist/css/hd-app.css --output-style compressed
|
||||
|
||||
watch:
|
||||
@echo 'watching for change'
|
||||
@echo 'press ctrl+C to stop'
|
||||
@while true; do \
|
||||
$(MAKE) build --silent; \
|
||||
sleep 0.5; \
|
||||
done
|
||||
|
||||
serve: dist/css/hd-app.css
|
||||
php -S 127.0.0.1:8080 router.php
|
||||
|
||||
dev-mt: watch serve
|
||||
|
||||
dev:
|
||||
@$(MAKE) dev-mt -j --no-print-directory
|
||||
|
||||
|
||||
.PHONY: default install build build-prod watch serve
|
24
README.md
24
README.md
@ -1,24 +0,0 @@
|
||||
# HD app
|
||||
HD app is the magic tool that allows the Happy Dev network to thrive in a decentralized way.
|
||||
|
||||
## Install
|
||||
|
||||
clone then:
|
||||
|
||||
* `make install`
|
||||
|
||||
## Build
|
||||
|
||||
Compile html & css:
|
||||
|
||||
* `make build`
|
||||
|
||||
or compile html & css on change:
|
||||
|
||||
* `make watch`
|
||||
|
||||
## Run server
|
||||
|
||||
require PHP
|
||||
|
||||
* `make serve`
|
@ -1,4 +0,0 @@
|
||||
- var dn = process.env.DN || 'http://127.0.0.1:8080'
|
||||
- var sdn = process.env.SDN || 'http://127.0.0.1:8000'
|
||||
- var cdn = process.env.CDN || 'http://127.0.0.1:8080'
|
||||
- var v = Date.now()
|
0
dist/css/.gitkeep
vendored
0
dist/css/.gitkeep
vendored
1
dist/lib/sib-chat
vendored
1
dist/lib/sib-chat
vendored
@ -1 +0,0 @@
|
||||
Subproject commit 24192a89c1bc19f7faa06546ba1b798ad717e04b
|
1
dist/lib/sib-core
vendored
1
dist/lib/sib-core
vendored
@ -1 +0,0 @@
|
||||
Subproject commit e493387102088c9d7c4cd03ce5d4edbc3a26cdcc
|
8
dist/lib/sib-oidc-client-config.json
vendored
8
dist/lib/sib-oidc-client-config.json
vendored
@ -1,8 +0,0 @@
|
||||
{
|
||||
"authority": "http://localhost:8000/openid/",
|
||||
"client_id": "598550",
|
||||
"redirect_uri": "http://oidc-client.local/user-manager-sample.html",
|
||||
"response_type": "id_token token",
|
||||
"scope": "openid profile email",
|
||||
"loadUserInfo": true
|
||||
}
|
61
dist/lib/sib-oidc-client.js
vendored
61
dist/lib/sib-oidc-client.js
vendored
@ -1,61 +0,0 @@
|
||||
if (typeof Oidc == "undefined") {
|
||||
throw new Error("You are missing the `oidc-client-js` lib");
|
||||
}
|
||||
|
||||
|
||||
// Var declarations
|
||||
var sib = {};
|
||||
sib.oidc = {};
|
||||
|
||||
|
||||
// Setup User Manager
|
||||
sib.oidc._setup = function(settings) {
|
||||
if (typeof sib.oidc._manager == "undefined") {
|
||||
sib.oidc._manager = new Oidc.UserManager(settings);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Retrieve User from sessionStorage, or fetch it
|
||||
sib.oidc._getUser = function() {
|
||||
sib.oidc._manager.getUser()
|
||||
.then(function(user) {
|
||||
if (user == null) {
|
||||
sib.oidc._manager.signinRedirectCallback()
|
||||
.then()
|
||||
.catch(function(error) {
|
||||
sib.oidc._manager.signinRedirect({state: "dummy data"})
|
||||
.then()
|
||||
.catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
else {
|
||||
sib.oidc.user = user;
|
||||
}
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Connect to OIDC provider
|
||||
sib.oidc._connect = function(settings) {
|
||||
sib.oidc._setup(settings);
|
||||
sib.oidc._getUser();
|
||||
|
||||
|
||||
// When user loaded...
|
||||
sib.oidc._manager.events.addUserLoaded(function(user) {
|
||||
sib.oidc._getUser();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Entry point
|
||||
fetch("./oidc-client-config.json")
|
||||
.then(response => response.json())
|
||||
.then(settings => sib.oidc._connect(settings));
|
||||
|
1
dist/lib/sib-router
vendored
1
dist/lib/sib-router
vendored
@ -1 +0,0 @@
|
||||
Subproject commit 04ea601abf2fe9d65603867450cb39106f5d06e8
|
1
dist/lib/webcomponentsjs
vendored
1
dist/lib/webcomponentsjs
vendored
@ -1 +0,0 @@
|
||||
Subproject commit bdd5203993f19ca08568638afd96f8f9c3959ea1
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"authority": "https://test-paris.happy-dev.fr/openid/",
|
||||
"client_id": "125356",
|
||||
"redirect_uri": "http://127.0.0.1:8080",
|
||||
"response_type": "id_token token",
|
||||
"scope": "openid profile email",
|
||||
"automaticSilentRenew": true,
|
||||
"silent_redirect_uri": "http://127.0.0.1:8080",
|
||||
"loadUserInfo": true
|
||||
}
|
2030
package-lock.json
generated
2030
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
18
package.json
18
package.json
@ -1,18 +0,0 @@
|
||||
{
|
||||
"name": "hd-app",
|
||||
"version": "0.1.0",
|
||||
"engines": {
|
||||
"node": ">= 0.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"node-sass": "^4.9.3",
|
||||
"pug-cli": "^1.0.0-alpha6"
|
||||
},
|
||||
"dependencies": {
|
||||
"bootstrap": "^4.0.0",
|
||||
"cropper": "^4.0.0",
|
||||
"font-awesome": "^4.7.0",
|
||||
"jquery": "^3.3.1",
|
||||
"normalize.css": "^8.0.0"
|
||||
}
|
||||
}
|
18
preprod.sh
18
preprod.sh
@ -1,18 +0,0 @@
|
||||
#!/bin/bash
|
||||
export DN="https://staging-app.happy-dev.fr"
|
||||
export SDN="https://test-paris.happy-dev.fr"
|
||||
export CDN="https://staging-app.happy-dev.fr/dist/lib"
|
||||
|
||||
make -B build
|
||||
|
||||
# ssh staging-app@ssh-staging-app.happy-dev.fr "rm -R staging-app.happy-dev.fr"
|
||||
ssh staging-app@ssh-staging-app.happy-dev.fr "mkdir -p staging-app.happy-dev.fr/src/fonts; cd staging-app.happy-dev.fr; mkdir -p dist/css;"
|
||||
|
||||
echo sync...
|
||||
rsync -u index.html staging-app@ssh-staging-app.happy-dev.fr:~/staging-app.happy-dev.fr/
|
||||
rsync -u .htaccess staging-app@ssh-staging-app.happy-dev.fr:~/staging-app.happy-dev.fr/
|
||||
rsync -u oidc-client-preprod-config.json staging-app@ssh-staging-app.happy-dev.fr:~/staging-app.happy-dev.fr/oidc-client-config.json
|
||||
rsync -r dist/* staging-app@ssh-staging-app.happy-dev.fr:~/staging-app.happy-dev.fr/dist/
|
||||
rsync -r src/fonts/* staging-app@ssh-staging-app.happy-dev.fr:~/staging-app.happy-dev.fr/src/fonts/
|
||||
rsync -r src/js/* staging-app@ssh-staging-app.happy-dev.fr:~/staging-app.happy-dev.fr/src/js/
|
||||
echo ...done
|
10
prod.sh
10
prod.sh
@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
export DN="https://app.happy-dev.fr"
|
||||
export SDN="https://hd-ldp.happy-dev.fr"
|
||||
make prod
|
||||
ssh hd-app@ssh-hd-app.alwaysdata.net "rm -R hd-app; mkdir hd-app; cd hd-app; mkdir -p src/fonts; mkdir -p dist/css;"
|
||||
scp index.html hd-app@ssh-hd-app.alwaysdata.net:~/hd-app/
|
||||
scp .htaccess hd-app@ssh-hd-app.alwaysdata.net:~/hd-app/
|
||||
scp -r dist/css/ hd-app@ssh-hd-app.alwaysdata.net:~/hd-app/dist/
|
||||
scp -r src/fonts/ hd-app@ssh-hd-app.alwaysdata.net:~/hd-app/src/
|
||||
scp -r src/js/ hd-app@ssh-hd-app.alwaysdata.net:~/hd-app/src/
|
11
router.php
11
router.php
@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (PHP_SAPI == 'cli-server') {
|
||||
$url = parse_url($_SERVER['REQUEST_URI']);
|
||||
$path = $url['path'];
|
||||
if(strpos($path, '.') !== false) return false;
|
||||
$file = __DIR__ . $path;
|
||||
if (is_file($file)) return false;
|
||||
}
|
||||
|
||||
include "index.html";
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 108 KiB |
Binary file not shown.
Binary file not shown.
@ -1,61 +0,0 @@
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
// Constants declaration
|
||||
const navBar = document.querySelector("#navbar");
|
||||
const searchBar = document.querySelector("#search-bar");
|
||||
const searchView = document.querySelector("#search-view");
|
||||
const searchInput = searchBar.querySelector("#search-input");
|
||||
const btnToggle = document.querySelector(".btn-toggle");
|
||||
|
||||
|
||||
// Shortcuts
|
||||
window.addEventListener("keydown", function(e) {
|
||||
// CTRL + K triggers the search feature
|
||||
if ((e.keyCode == 75 || e.keyCode == 80) && (e.ctrlKey === true || e.metaKey === true)) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
openSearchBar();
|
||||
}
|
||||
|
||||
// Escape key
|
||||
else if (e.keyCode == 27 && navBar.classList.contains("search-mode")) {
|
||||
closeSearchBar();
|
||||
}
|
||||
});
|
||||
|
||||
searchBar.querySelector("#close-search-icon").addEventListener("click", emptySearchBar);
|
||||
|
||||
function openSearchBar(e) {
|
||||
navBar.classList.add("search-mode");
|
||||
searchBar.querySelector("#search-input").focus();
|
||||
searchView.classList.add("search-mode");
|
||||
}
|
||||
|
||||
function closeSearchBar(e) {
|
||||
navBar.classList.remove("search-mode");
|
||||
searchView.classList.remove("search-mode");
|
||||
}
|
||||
|
||||
function emptySearchBar(e) {
|
||||
searchInput.value = '';
|
||||
openSearchBar();
|
||||
searchInput.focus;
|
||||
}
|
||||
|
||||
|
||||
// Synchronizes the search input with the <ldp-form>s
|
||||
searchInput.addEventListener("keyup", (e) => {
|
||||
searchView.querySelectorAll("ldp-form input[type=text]").forEach((el) => {
|
||||
el.value = searchInput.value;
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
btnToggle.addEventListener('click', e => {
|
||||
navBar.classList.toggle('open');
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
window.addEventListener('click', e=>{
|
||||
navBar.classList.remove('open');
|
||||
});
|
||||
});
|
@ -1,6 +0,0 @@
|
||||
#calendar(style='display: none')
|
||||
h1.page-title Agenda
|
||||
ldp-calendar(
|
||||
data-src='http://lucky.alwaysdata.net/api/events/',
|
||||
style='display: block; height: 300px; width: 500px;'
|
||||
)
|
@ -1 +0,0 @@
|
||||
#channel-chat.chat-view(style='display: none', bind-resources='')
|
@ -1,7 +0,0 @@
|
||||
#channel-create(style='display: none')
|
||||
sib-form(
|
||||
data-src=`${sdn}/channels/`,
|
||||
range-owner=`${sdn}/members/`,
|
||||
widget-members='sib-form-multiple-dropdown',
|
||||
range-members=`${sdn}/members/`
|
||||
)
|
@ -1,7 +0,0 @@
|
||||
#channel-edit(style='display: none')
|
||||
sib-form(
|
||||
range-owner=`${sdn}/members/`,
|
||||
widget-members='sib-form-multiple-dropdown',
|
||||
range-members=`${sdn}/members/`,
|
||||
bind-resources=''
|
||||
)
|
@ -1,36 +0,0 @@
|
||||
script.
|
||||
document.addEventListener("WebComponentsReady", function(event) {
|
||||
class HDAppMember extends SIBWidget {
|
||||
get template() {
|
||||
return `
|
||||
<div name="${this.name}">
|
||||
<img src="${this.value.avatar}"/>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
render() {
|
||||
store.get(this.value).then( (value) => {
|
||||
this._value = value;
|
||||
this.innerHTML = this.template;
|
||||
});
|
||||
}
|
||||
}
|
||||
customElements.define("hdapp-member", HDAppMember);
|
||||
});
|
||||
|
||||
#channel-profile(style='display: none')
|
||||
sib-display(
|
||||
data-fields='name, description, owner',
|
||||
widget-owner='hdapp-member',
|
||||
bind-resources=''
|
||||
)
|
||||
h2.section.skills Participants
|
||||
sib-display(
|
||||
id-suffix='members',
|
||||
data-fields='avatar, user',
|
||||
widget-avatar='sib-display-img',
|
||||
widget-user='hdapp-userinfo',
|
||||
bind-resources=''
|
||||
)
|
||||
|
@ -1,15 +0,0 @@
|
||||
#channel(style='display: none')
|
||||
sib-router#channel-router(default-route='channel-profile')
|
||||
sib-route(name='channel-chat')
|
||||
button Chat
|
||||
sib-route(name='channel-profile')
|
||||
button Info
|
||||
sib-route(name='channel-edit')
|
||||
button Éditer
|
||||
sib-route(name='channel-create')
|
||||
button Nouveau
|
||||
#network-views-container
|
||||
include channel-chat.pug
|
||||
include channel-profile.pug
|
||||
include channel-edit.pug
|
||||
include channel-create.pug
|
@ -1,7 +0,0 @@
|
||||
#channels(style='display: none')
|
||||
sib-display#channels-list(
|
||||
data-src=`${sdn}/channels/`,
|
||||
data-fields='name, description',
|
||||
search-fields='name, description',
|
||||
next='channel'
|
||||
)
|
@ -1,5 +0,0 @@
|
||||
#client-create(style='display: none')
|
||||
sib-form(
|
||||
data-src=`${sdn}/clients/`,
|
||||
data-fields='name, address, logo'
|
||||
)
|
@ -1,24 +0,0 @@
|
||||
#dashboard(style='display: none')
|
||||
//- form
|
||||
.form-group
|
||||
input#search-input.form-control.form-control-sm(
|
||||
placeholder='Recherche',
|
||||
aria-describedby='search-help',
|
||||
autofocus='',
|
||||
type='text'
|
||||
)
|
||||
small#search-help.form-text.text-muted * parmi les membres, les projets et les groupes de discussion
|
||||
|
||||
.list-condensed
|
||||
ldp-display#to-user-profile(
|
||||
data-src=`${sdn}/members/1/`,
|
||||
set-name='firstname, name-separator, lastname',
|
||||
value-name-separator=' ',
|
||||
data-fields='avatar, name',
|
||||
widget-avatar='ldp-display-img'
|
||||
)
|
||||
script.
|
||||
document.querySelector("#to-user-profile").addEventListener("click", () => {
|
||||
document.getElementById("navbar-router").navigate("member");
|
||||
document.getElementById("member-page-router").navigate("member-detail");
|
||||
});
|
@ -1,17 +0,0 @@
|
||||
// Stylesheets
|
||||
//- link(rel='stylesheet', href=`${dn}/node_modules/bootstrap/dist/css/bootstrap.min.css`)
|
||||
//- link(rel='stylesheet', href=`${dn}/node_modules/cropper/dist/cropper.min.css`)
|
||||
link(rel='stylesheet', href=`${dn}/node_modules/font-awesome/css/font-awesome.min.css`)
|
||||
link(rel='stylesheet', href=`${dn}/node_modules/normalize.css/normalize.css?v=${v}`)
|
||||
link(rel='stylesheet', href=`${dn}/dist/css/hd-app.css?v=${v}`)
|
||||
// Javascript
|
||||
script(src=`${dn}/node_modules/jquery/dist/jquery.min.js`)
|
||||
//- script(src=`${dn}/node_modules/bootstrap/dist/js/bootstrap.min.js`)
|
||||
script(src=`${dn}/node_modules/cropper/dist/cropper.min.js`)
|
||||
script(src=`${dn}/dist/lib/webcomponentsjs/webcomponents-loader.js`)
|
||||
script(src=`${dn}/src/js/hd-app.js?v=${v}`)
|
||||
//- script(src=`${dn}/dist/lib/sib-chat/3rdparty/sib-oidc-client.js?v=${v}`)
|
||||
// Web components
|
||||
link(rel='import', href=`${dn}/dist/lib/sib-core/sib-display.html?v=${v}`)
|
||||
link(rel='import', href=`${dn}/dist/lib/sib-router/sib-router.html?v=${v}`)
|
||||
//- link(rel='import', href=`${dn}/dist/lib/sib-chat/sib-chat.html`)
|
@ -1,34 +0,0 @@
|
||||
// Stylesheets
|
||||
//-link(rel='stylesheet', href='https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css', integrity='sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4', crossorigin='anonymous')
|
||||
link(href='https://cdn.bootcss.com/cropper/4.0.0/cropper.min.css', rel='stylesheet')
|
||||
link(rel='stylesheet', href='https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css')
|
||||
link(rel='stylesheet', href=`${dn}/dist/css/hd-app.css?v=${v}`)
|
||||
|
||||
// Javascript
|
||||
script(
|
||||
src='https://code.jquery.com/jquery-3.3.1.slim.min.js',
|
||||
integrity='sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo',
|
||||
crossorigin='anonymous')
|
||||
script(
|
||||
src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js',
|
||||
integrity='sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ',
|
||||
crossorigin='anonymous')
|
||||
script(
|
||||
src='https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js',
|
||||
integrity='sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm',
|
||||
crossorigin='anonymous')
|
||||
script(
|
||||
src='https://cdn.bootcss.com/cropper/4.0.0/cropper.min.js')
|
||||
script(
|
||||
src='https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.2.0/webcomponents-loader.js',
|
||||
integrity='sha256-fUVqCtpScUF69qkFkeuHmcShr2N2UleRQJhRG4etHds=',
|
||||
crossorigin='anonymous')
|
||||
script(
|
||||
src=`${dn}/src/js/hd-app.js?v=${v}`)
|
||||
script(
|
||||
src=`${cdn}/sib-chat/3rdparty/sib-oidc-client.js?v=${v}`)
|
||||
|
||||
// Web components
|
||||
link(rel='import', href=`${cdn}/sib-core/sib-display.html?v=${v}`)
|
||||
link(rel='import', href=`${cdn}/sib-router/sib-router.html?v=${v}`)
|
||||
link(rel='import', href=`${cdn}/sib-chat/sib-chat.html`)
|
@ -1,2 +0,0 @@
|
||||
#drive(style='display: none')
|
||||
h1.page-title Drive
|
@ -1,8 +0,0 @@
|
||||
header#header
|
||||
div#logo
|
||||
| Happy Dev
|
||||
|
||||
#search-bar
|
||||
input#search-input(placeholder='ctrl + k', type='search')
|
||||
i#search-icon.fa.fa-search(aria-hidden='true')
|
||||
i#close-search-icon.fa.fa-times(aria-hidden='true')
|
@ -1,51 +0,0 @@
|
||||
doctype html
|
||||
html(lang='fr')
|
||||
head
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1.0')
|
||||
meta(http-equiv='X-UA-Compatible', content='ie=edge')
|
||||
title Happy Dev App
|
||||
//- Prod/Dev setup
|
||||
if (['https://app.happy-dev.fr', 'https://staging-app.happy-dev.fr'].includes(dn))
|
||||
include dependencies-prod.pug
|
||||
else
|
||||
include dependencies-dev.pug
|
||||
body
|
||||
include header.pug
|
||||
div#subContainer
|
||||
include menu.pug
|
||||
main#mainContainer
|
||||
//- include dashboard.pug
|
||||
include members.pug
|
||||
include member.pug
|
||||
include job-offers.pug
|
||||
//- include projects.pug
|
||||
include project.pug
|
||||
//- include client-creation.pug
|
||||
//- include channels.pug
|
||||
include channel.pug
|
||||
//- include search.pug
|
||||
sib-chat#chat-singleton(data-authentication='login', data-auto-login='true', data-bosh-service-url='https://jabber.happy-dev.fr/http-bind/', data-debug='false', data-locales-url='en', bind-resources='')
|
||||
script.
|
||||
// Move the chat singleton to the right view on "page load"
|
||||
window.onload = function() {
|
||||
if (window.location.pathname.indexOf("-chat") !== -1) {
|
||||
var chatSingleton = document.querySelector("#chat-singleton");
|
||||
var pathnameParts = window.location.pathname.split("/");
|
||||
var viewName = pathnameParts[pathnameParts.length - 1];
|
||||
var view = document.getElementById(viewName);
|
||||
console.log({chatSingleton,pathnameParts,viewName,view});
|
||||
|
||||
view.appendChild(chatSingleton);
|
||||
chatSingleton.dataset.src = view.dataset.src;
|
||||
}
|
||||
}
|
||||
|
||||
// Move the chat singleton to the right view on "navigate"
|
||||
window.addEventListener('navigate', event => {
|
||||
var chatSingleton = document.querySelector("#chat-singleton");
|
||||
var view = document.getElementById(event.detail.route);
|
||||
|
||||
view.querySelector(".chat-view").appendChild(chatSingleton);
|
||||
chatSingleton.dataset.src = view.dataset.src;
|
||||
});
|
@ -1,40 +0,0 @@
|
||||
script.
|
||||
document.addEventListener('WebComponentsReady', function(event) {
|
||||
class HDAppAuthor extends SIBDisplayLookupList {
|
||||
get parentElement() {
|
||||
return 'div';
|
||||
}
|
||||
getTemplate(value, index) {
|
||||
var firstname, lastname;
|
||||
if (typeof value == 'object')
|
||||
if (Object.keys(value).length > 1) {
|
||||
firstname = value.user.first_name;
|
||||
lastname = value.user.last_name;
|
||||
} else {
|
||||
store.get(value).then(resource => {
|
||||
this.value.push(resource);
|
||||
this.render();
|
||||
});
|
||||
if (Array.isArray(this.value))
|
||||
this.value.splice(this.value.indexOf(value), 1);
|
||||
else this.value = [];
|
||||
return '';
|
||||
}
|
||||
return `${firstname} ${lastname}`;
|
||||
}
|
||||
}
|
||||
customElements.define('hdapp-author', HDAppAuthor);
|
||||
});
|
||||
|
||||
|
||||
#job-offers(style='display: none')
|
||||
div
|
||||
h1 Job offers
|
||||
sib-display#offers-list(
|
||||
data-src=`${sdn}/job-offers/`,
|
||||
data-fields='author, title, description, skills',
|
||||
set-searchset='title, description',
|
||||
widget-skills='sib-display-lookuplist',
|
||||
widget-author='hdapp-author',
|
||||
search-fields='searchset'
|
||||
)
|
@ -1 +0,0 @@
|
||||
#member-chat.chat-view(style='display: none', bind-resources='')
|
@ -1,97 +0,0 @@
|
||||
// script.
|
||||
class LDPFormImgUpload extends SIBWidget {
|
||||
get template() {
|
||||
return `<label for="${this.name}"><img id="${this.name}-preview" src="${this.value}"/></label>
|
||||
<input id="${this.name}" type="file" name="${this.name}" value="${this.value}" />`;
|
||||
}
|
||||
|
||||
render() {
|
||||
store.get(this.value).then( (value) => {
|
||||
this._value = value;
|
||||
this.innerHTML = this.template;
|
||||
});
|
||||
}
|
||||
}
|
||||
customElements.define("ldp-form-img-upload", LDPFormImgUpload);
|
||||
widget-avatar="ldp-form-img-upload"
|
||||
|
||||
#member-edit(style='display: none')
|
||||
label.d-none(for='avatar-input')
|
||||
img#avatar-preview(src='', style='width: 100%;')
|
||||
input#avatar-input.d-none(accept='image/*', name='avatar', value='', type='file')
|
||||
sib-form.edit-form(
|
||||
data-fields='user, avatar, bio, cell, jabberID, number, pseudo, skills, website',
|
||||
widget-user='hdapp-usereditinfo',
|
||||
range-cell=`${sdn}/cells/`, widget-skills='sib-form-multiple-dropdown',
|
||||
range-skills=`${sdn}/skills/`,
|
||||
bind-resources=''
|
||||
)
|
||||
#crop-modal
|
||||
.crop-wrapper
|
||||
img#crop-preview(src='')
|
||||
.control-bar
|
||||
button#cancel-img-cropping.btn.btn-link Annuler
|
||||
i#rotate-img.fa.fa-undo(aria-hidden='true')
|
||||
button#crop-img.btn.btn-link Valider
|
||||
|
||||
|
||||
script.
|
||||
// Constant declaration
|
||||
const avatarPreview = document.querySelector("#avatar-preview");
|
||||
const avatarInput = document.querySelector("#avatar-input");
|
||||
const cropModal = document.querySelector("#crop-modal");
|
||||
const cropPreview = cropModal.querySelector("#crop-preview");
|
||||
const $cropPreview = $(cropPreview);
|
||||
|
||||
// Triggers cropping on image upload
|
||||
avatarInput.addEventListener("change", function(e) {
|
||||
var img = avatarInput.files[0];
|
||||
var reader = new FileReader();
|
||||
|
||||
reader.onloadend = function () {
|
||||
cropPreview.src = reader.result;
|
||||
cropModal.classList.add("cropping-mode");
|
||||
}
|
||||
|
||||
if (img) {
|
||||
reader.readAsDataURL(img);//reads the data as a URL
|
||||
}
|
||||
});
|
||||
cropPreview.addEventListener("load", () => {
|
||||
$cropPreview.cropper({
|
||||
aspectRatio: 1/1,
|
||||
viewMode: 3,
|
||||
zoomable: false,
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// Rotate image
|
||||
cropModal.querySelector("#rotate-img").addEventListener("click", () => {
|
||||
$cropPreview.cropper("rotate", -90);
|
||||
});
|
||||
|
||||
|
||||
// Cancel cropping
|
||||
cropModal.querySelector("#cancel-img-cropping").addEventListener("click", () => {
|
||||
closeCropping();
|
||||
});
|
||||
|
||||
// Shortcut
|
||||
document.querySelector("body").addEventListener("keydown", function(e) {
|
||||
// Escape key
|
||||
if (e.keyCode == 27 && cropModal.classList.contains("cropping-mode")) {
|
||||
closeCropping();
|
||||
}
|
||||
});
|
||||
function closeCropping() {
|
||||
cropModal.classList.remove("cropping-mode");
|
||||
avatarInput.value = null;
|
||||
}
|
||||
|
||||
|
||||
// Validating cropping
|
||||
cropModal.querySelector("#crop-img").addEventListener("click", () => {
|
||||
avatarPreview.src = $cropPreview.cropper("getCroppedCanvas").toDataURL()
|
||||
closeCropping();
|
||||
});
|
@ -1,13 +0,0 @@
|
||||
#member-profile(style='display: none')
|
||||
sib-display#member-info(
|
||||
data-fields='header, cell, number, roles, website, skills',
|
||||
set-header='avatar, user, pseudonym, bio'
|
||||
set-pseudonym='before-pseudo, pseudo'
|
||||
widget-avatar='sib-display-img',
|
||||
widget-user='hdapp-userinfo',
|
||||
widget-cell='hdapp-usercell',
|
||||
widget-number='sib-display-tel',
|
||||
widget-roles='sib-display-lookuplist',
|
||||
widget-skills='sib-display-lookuplist',
|
||||
bind-resources=''
|
||||
)
|
@ -1,12 +0,0 @@
|
||||
#member(style='display: none')
|
||||
sib-router#member-router(default-route='member-profile')
|
||||
sib-route(name='member-chat')
|
||||
div Chat
|
||||
sib-route(name='member-profile')
|
||||
div Voir
|
||||
sib-route(name='member-edit')
|
||||
div Éditer
|
||||
#member-views-container
|
||||
include member-chat.pug
|
||||
include member-profile.pug
|
||||
include member-edit.pug
|
@ -1,73 +0,0 @@
|
||||
script.
|
||||
document.addEventListener("WebComponentsReady", function(event) {
|
||||
class HDAppUserInfo extends SIBDisplayLookupList {
|
||||
get parentElement() {return "div"}
|
||||
getTemplate(value, index) {
|
||||
var firstname, lastname, email;
|
||||
|
||||
if(typeof value == "object")
|
||||
if(Object.keys(value).length > 1) {
|
||||
firstname = value.first_name;
|
||||
lastname = value.last_name;
|
||||
email = value.email;
|
||||
}
|
||||
else {
|
||||
store.get(value).then(resource => {
|
||||
this.value.push(resource);
|
||||
this.render();
|
||||
});
|
||||
if(Array.isArray(this.value))this.value.splice(this.value.indexOf(value), 1);
|
||||
else this.value = [];
|
||||
return '';
|
||||
}
|
||||
return `<div id="${firstname}-${lastname}">${firstname} ${lastname}</div>`;
|
||||
// + `<div id="${email}">${email}</div>`;
|
||||
}
|
||||
}
|
||||
customElements.define('hdapp-userinfo', HDAppUserInfo);
|
||||
|
||||
class HDAppCell extends SIBDisplayLookupList {
|
||||
get parentElement() {return "div"}
|
||||
getTemplate(value, index) {
|
||||
var city, country;
|
||||
|
||||
if(typeof value == "object")
|
||||
if(Object.keys(value).length > 1) {
|
||||
city = value.city;
|
||||
country = value.country;
|
||||
}
|
||||
else {
|
||||
store.get(value).then(resource => {
|
||||
this.value.push(resource);
|
||||
this.render();
|
||||
});
|
||||
if(Array.isArray(this.value))this.value.splice(this.value.indexOf(value), 1);
|
||||
else this.value = [];
|
||||
return '';
|
||||
}
|
||||
return `<span id="${city}-${country}">${city} ${country}</span>`;
|
||||
}
|
||||
}
|
||||
customElements.define("hdapp-usercell", HDAppCell);
|
||||
});
|
||||
|
||||
#members.view(style='display: none')
|
||||
div
|
||||
h1 Members
|
||||
sib-display#profiles-list(
|
||||
data-src=`${sdn}/members/`,
|
||||
data-fields='header, cell, skills',
|
||||
set-header='avatar, user, pseudonym, bio'
|
||||
set-pseudonym='before-pseudo, pseudo'
|
||||
value-before-pseudo='@',
|
||||
widget-avatar='sib-display-img',
|
||||
widget-user='hdapp-userinfo',
|
||||
widget-cell='hdapp-usercell',
|
||||
widget-skills='sib-display-lookuplist',
|
||||
set-searchset='user.first_name, user.last_name',
|
||||
search-fields='searchset',
|
||||
next='member'
|
||||
)
|
||||
|
||||
|
||||
|
@ -1,39 +0,0 @@
|
||||
.btn-toggle
|
||||
i.fa.fa-bars
|
||||
div
|
||||
nav#navbar
|
||||
sib-router#navbar-router(default-route='members')
|
||||
div(hidden)
|
||||
sib-route(name='member', id-prefix=`${sdn}/members/`)
|
||||
sib-route(name='project', id-prefix=`${sdn}/projects/`)
|
||||
sib-route(name='channel', id-prefix=`${sdn}/channels/`)
|
||||
div#menu-items
|
||||
sib-route(name='members')
|
||||
div
|
||||
i.fa.fa-users
|
||||
| Membres
|
||||
sib-route(name='job-offers')
|
||||
div
|
||||
i.fa.fa-handshake-o
|
||||
| Job offers
|
||||
div
|
||||
div
|
||||
i.fa.fa-tasks
|
||||
| Projets
|
||||
sib-display(
|
||||
data-src=`${sdn}/projects/`,
|
||||
data-fields='name',
|
||||
next='project'
|
||||
)
|
||||
div
|
||||
div
|
||||
i.fa.fa-tasks
|
||||
| Channels
|
||||
sib-display(
|
||||
data-src=`${sdn}/channels/`,
|
||||
data-fields='name',
|
||||
next='channel'
|
||||
)
|
||||
//- sib-route(name='client-create')
|
||||
i.fa.fa-plus(aria-hidden='true')
|
||||
| New client
|
@ -1 +0,0 @@
|
||||
#project-chat.chat-view(style='display: none', bind-resources='')
|
@ -1,7 +0,0 @@
|
||||
#project-create(style='display: none')
|
||||
sib-form(
|
||||
data-src=`${sdn}/projects/`,
|
||||
range-client=`${sdn}/clients/`,
|
||||
widget-team='sib-form-multiple-dropdown',
|
||||
range-team=`${sdn}/members/`
|
||||
)
|
@ -1,7 +0,0 @@
|
||||
#project-edit(style='display: none')
|
||||
sib-form(
|
||||
range-client=`${sdn}/clients/`,
|
||||
widget-team='sib-form-multiple-dropdown',
|
||||
range-team=`${sdn}/members/`,
|
||||
bind-resources=''
|
||||
)
|
@ -1,16 +0,0 @@
|
||||
#project-profile(style='display: none')
|
||||
sib-display(
|
||||
data-fields='title, description, client',
|
||||
set-title='number, name'
|
||||
widget-client='hdapp-client',
|
||||
bind-resources=''
|
||||
)
|
||||
h3 Team
|
||||
sib-display.members-list-condensed(
|
||||
id-suffix='team',
|
||||
data-fields='avatar, user',
|
||||
widget-avatar='sib-display-img',
|
||||
widget-user='hdapp-userinfo',
|
||||
next='member',
|
||||
bind-resources=''
|
||||
)
|
@ -1,15 +0,0 @@
|
||||
#project(style='display: none')
|
||||
sib-router#project-router(default-route='project-profile')
|
||||
sib-route(name='project-chat')
|
||||
div Chat
|
||||
sib-route(name='project-profile')
|
||||
div Voir
|
||||
sib-route(name='project-edit')
|
||||
div Éditer
|
||||
sib-route(name='project-create')
|
||||
div Nouveau
|
||||
#project-views-container
|
||||
include project-chat.pug
|
||||
include project-profile.pug
|
||||
include project-edit.pug
|
||||
include project-create.pug
|
@ -1,27 +0,0 @@
|
||||
script.
|
||||
document.addEventListener("WebComponentsReady", function(event) {
|
||||
class HDAppClient extends SIBWidget {
|
||||
get template() {
|
||||
|
||||
return `<img name="${this.name}" src="${this.value.logo}"/>`;
|
||||
}
|
||||
|
||||
render() {
|
||||
store.get(this.value).then( (value) => {
|
||||
this._value = value;
|
||||
this.innerHTML = this.template;
|
||||
});
|
||||
}
|
||||
}
|
||||
customElements.define("hdapp-client", HDAppClient);
|
||||
});
|
||||
|
||||
#projects(style='display: none')
|
||||
h1 Projects
|
||||
sib-display(
|
||||
data-src=`${sdn}/projects/`,
|
||||
data-fields='number, client, name',
|
||||
widget-client='hdapp-client',
|
||||
search-fields='number, name',
|
||||
next='project'
|
||||
)
|
@ -1,26 +0,0 @@
|
||||
#search-view
|
||||
.content.container-fluid
|
||||
ldp-display#search-results-members.list-condensed(
|
||||
data-src=`${sdn}/members/`,
|
||||
set-name='firstname, name-separator, lastname',
|
||||
value-name-separator=' ',
|
||||
data-fields='avatar, name',
|
||||
widget-avatar='ldp-display-img',
|
||||
search-fields='firstname, lastname',
|
||||
next='member'
|
||||
)
|
||||
ldp-display#search-results-projects.list-condensed(
|
||||
data-src=`${sdn}/projects/`,
|
||||
set-title='number, after-num-separator, name',
|
||||
value-after-num-separator=' - ',
|
||||
data-fields='client, title',
|
||||
widget-client='ldp-display-client',
|
||||
search-fields='number, name',
|
||||
next='project'
|
||||
)
|
||||
ldp-display#search-results-channels(
|
||||
data-src=`${sdn}/channels/`,
|
||||
data-fields='name',
|
||||
search-fields='name',
|
||||
next='channel'
|
||||
)
|
@ -1,62 +0,0 @@
|
||||
#channel {
|
||||
#channel-detail {
|
||||
#channel-info {
|
||||
display: block;
|
||||
padding-top: 10px;
|
||||
|
||||
div[name="name"] {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
ldp-display-member {
|
||||
img {
|
||||
width: 50px;
|
||||
border-radius: 100px;
|
||||
}
|
||||
|
||||
span {
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
#chat-members {
|
||||
ldp-display {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
|
||||
img {
|
||||
width: 50px;
|
||||
border-radius: 100px;
|
||||
}
|
||||
|
||||
div[name="name"] {
|
||||
display: flex;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[name="admin"],
|
||||
.section {
|
||||
@extend %detail-section;
|
||||
margin-top: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $sm-with) {
|
||||
#channel {
|
||||
#channel-detail {
|
||||
#channel-info {
|
||||
ldp-display-client {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 300px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,24 +0,0 @@
|
||||
#channels {
|
||||
#channels-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
ldp-display {
|
||||
@extend %td;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 65px;
|
||||
|
||||
&:hover {
|
||||
background-color: $hd-color-faded;
|
||||
color: white;
|
||||
}
|
||||
|
||||
ldp-display-div[name="name"] {
|
||||
width: 130px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
sib-chat {
|
||||
//position: absolute;
|
||||
border: 5px dotted red;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: auto;
|
||||
display: none;
|
||||
min-height: 300px;
|
||||
}
|
||||
|
||||
.chat-view {
|
||||
sib-chat {
|
||||
display: block;
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
.list-condensed {
|
||||
ldp-display {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
|
||||
img {
|
||||
width: 50px;
|
||||
border-radius: 100px;
|
||||
}
|
||||
|
||||
& > div[name="name"],
|
||||
& > div[name="title"] {
|
||||
display: flex;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
#dashboard {
|
||||
#to-user-profile {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
#crop-modal {
|
||||
position: absolute;
|
||||
z-index: 1111;
|
||||
top: $menu-height;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
background-color: black;
|
||||
display: none;
|
||||
|
||||
&.cropping-mode {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.crop-wrapper {
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.control-bar {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
color: white;
|
||||
font-size: 30px;
|
||||
|
||||
button {
|
||||
text-transform: uppercase;
|
||||
color: white;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
i {
|
||||
padding-top: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +0,0 @@
|
||||
@font-face {
|
||||
font-family: 'bebas';
|
||||
src: url('../../src/fonts/bebas/bebas.eot'); /* IE9 Compat Modes */
|
||||
src: url('../../src/fonts/bebas/bebas.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('../../src/fonts/bebas/bebas.woff') format('woff'), /* Pretty Modern Browsers */
|
||||
url('../../src/fonts/bebas/bebas.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('../../src/fonts/bebas/bebas.svg#svgFontName') format('svg'); /* Legacy iOS */
|
||||
}
|
@ -1,102 +0,0 @@
|
||||
ldp-display {
|
||||
ldp-form {
|
||||
display: block;
|
||||
background-color: #F3F3F3;
|
||||
padding: 15px;
|
||||
box-sizing: content-box;
|
||||
|
||||
form {
|
||||
@extend %self-clear;
|
||||
|
||||
ldp-form-text {
|
||||
position: relative;
|
||||
display: block;
|
||||
margin-bottom: 1rem;
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
bottom: 0px;
|
||||
left: 10px;
|
||||
margin: auto;
|
||||
font-family: FontAwesome;
|
||||
content: "\f002";
|
||||
color: gray;
|
||||
}
|
||||
|
||||
label {
|
||||
text-transform: capitalize;
|
||||
display: none;
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
@extend %form-control;
|
||||
@extend %form-control-sm;
|
||||
|
||||
padding-left: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="submit"],
|
||||
input[type="reset"] {
|
||||
@extend %btn;
|
||||
float: right;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
@extend %btn-primary;
|
||||
}
|
||||
|
||||
input[type="reset"] {
|
||||
@extend %btn-link;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ldp-form.edit-form {
|
||||
ldp-form-text {
|
||||
@extend %form-group;
|
||||
|
||||
label {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
input {
|
||||
@extend %form-control;
|
||||
@extend %form-control-sm;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
@extend %btn;
|
||||
@extend %btn-primary;
|
||||
}
|
||||
}
|
||||
|
||||
sib-form {
|
||||
sib-form-text {
|
||||
|
||||
label {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
input {
|
||||
margin-right: .5em;
|
||||
padding: .375em .75em;
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
color: #495057;
|
||||
background-color: #fff;
|
||||
border: 1px solid #ced4da;
|
||||
border-radius: .25rem;
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="submit"], input[type="reset"] {
|
||||
@extend %btn;
|
||||
@extend %btn-primary;
|
||||
margin-right: .5em;
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
#header{
|
||||
background-color: $col-alt-bg;
|
||||
color: $col-alt-fg;
|
||||
display: flex;
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
#logo{
|
||||
flex: 1 1 0px;
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
#offers-list {
|
||||
> div {
|
||||
> sib-display {
|
||||
display: block;
|
||||
margin: 1em 0;
|
||||
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);
|
||||
background-color: #efefef;
|
||||
padding: 0.5em 1em;
|
||||
&:nth-child(odd) {
|
||||
background-color: #e0e0e0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
%detail-section {
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
#member-chat {
|
||||
#conversejs {
|
||||
margin: none;
|
||||
}
|
||||
}
|
||||
|
||||
#profiles-list,
|
||||
#member-info {
|
||||
img {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&,
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div[name='name'] {
|
||||
@extend %detail-section;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
div[name='name'],
|
||||
div[name='location'] {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
#member-detail {
|
||||
#member-info {
|
||||
sib-display-mailto,
|
||||
sib-display-tel {
|
||||
display: block;
|
||||
}
|
||||
|
||||
a[name='email'],
|
||||
a[name='number'] {
|
||||
&::before {
|
||||
font-family: FontAwesome;
|
||||
padding-right: 4px;
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
a[name='email'] {
|
||||
&::before {
|
||||
content: '\f0e0';
|
||||
}
|
||||
}
|
||||
a[name='number'] {
|
||||
&::before {
|
||||
content: '\f10b';
|
||||
font-size: 22px;
|
||||
padding-left: 3px;
|
||||
padding-right: 7px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.section {
|
||||
position: relative;
|
||||
|
||||
h2 {
|
||||
@extend %detail-section;
|
||||
margin-top: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
#member-skills {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
sib-display {
|
||||
display: block;
|
||||
background-color: $hd-color;
|
||||
color: white;
|
||||
border-radius: 100px;
|
||||
padding: 3px 10px;
|
||||
margin-bottom: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $sm-with) {
|
||||
#member-detail {
|
||||
#member-info {
|
||||
sib-display-img {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 300px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#member-info {
|
||||
@extend %member;
|
||||
}
|
||||
|
||||
.members-list-condensed{
|
||||
display: block;
|
||||
img{
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 100%;
|
||||
object-fit: cover;
|
||||
object-position: top;
|
||||
}
|
||||
label{
|
||||
display: none;
|
||||
}
|
||||
>div>sib-display>div{
|
||||
display: flex;
|
||||
}
|
||||
ul{
|
||||
padding-left: 1em;
|
||||
}
|
||||
}
|
@ -1,127 +0,0 @@
|
||||
%member {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||
grid-gap: 1em;
|
||||
label {
|
||||
display: none;
|
||||
}
|
||||
> sib-display {
|
||||
display: block;
|
||||
position: relative;
|
||||
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);
|
||||
padding: 0.5em;
|
||||
cursor: pointer;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
transform: scale3d(0, 0, 1);
|
||||
transition: transform 0.3s ease-out 0s;
|
||||
background: #eac1;
|
||||
content: '';
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&::before {
|
||||
transform-origin: left top;
|
||||
}
|
||||
|
||||
&::after {
|
||||
transform-origin: right bottom;
|
||||
|
||||
background: #ace1;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
&::before,
|
||||
&::after {
|
||||
transform: scale3d(1, 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#profiles-list {
|
||||
display: block;
|
||||
sib-form {
|
||||
display: block;
|
||||
margin: 3em 0;
|
||||
input[type='reset'] {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
div[name='header'] {
|
||||
border-top: 2em solid $col-alt-bg;
|
||||
border-bottom: 1px solid $col-alt-bg;
|
||||
padding-bottom: 1em;
|
||||
margin-bottom: 1em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
> div {
|
||||
@extend %member;
|
||||
}
|
||||
sib-display-img {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 80%;
|
||||
height: 0;
|
||||
padding-bottom: 80%;
|
||||
margin: 10%;
|
||||
img {
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
}
|
||||
}
|
||||
|
||||
hdapp-userinfo {
|
||||
display: block;
|
||||
color: $pal-black;
|
||||
font-size: 1.1em;
|
||||
margin: 0.5em;
|
||||
ul,
|
||||
li {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
}
|
||||
|
||||
div[name='pseudonym'] {
|
||||
font-size: 0.8em;
|
||||
div {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
}
|
||||
sib-display-lookuplist[name='skills'] {
|
||||
ul,
|
||||
li {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
ul {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin: 0 -0.25em;
|
||||
}
|
||||
li {
|
||||
padding: 0.5em 1em;
|
||||
border: 1px solid;
|
||||
border-radius: 0.25em;
|
||||
margin: 0.25em;
|
||||
}
|
||||
}
|
@ -1,127 +0,0 @@
|
||||
// #navbar{}
|
||||
// #navbar-router{}
|
||||
|
||||
.btn-toggle {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: $col-alt-bg;
|
||||
color: $col-alt-fg;
|
||||
font-size: 1.5em;
|
||||
padding: 0.5em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#navbar {
|
||||
background-color: $col-dark-bg;
|
||||
color: $col-dark-fg;
|
||||
max-width: 16rem;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
max-height: 100vh;
|
||||
&.open {
|
||||
transform: translateX(0);
|
||||
}
|
||||
&:after {
|
||||
//Shadow
|
||||
$shadow-width: 4px;
|
||||
$shadow-opacity: 0.35;
|
||||
content: '';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: -$shadow-width;
|
||||
width: $shadow-width;
|
||||
background-image: linear-gradient(
|
||||
to right,
|
||||
rgba(0, 0, 0, $shadow-opacity),
|
||||
transparent
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 32rem) {
|
||||
.btn-toggle {
|
||||
display: block;
|
||||
}
|
||||
#navbar {
|
||||
transform: translateX(-100%);
|
||||
transition: transform 0.5s ease;
|
||||
position: absolute;
|
||||
top: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
#header {
|
||||
padding-left: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
#menu-items {
|
||||
> * {
|
||||
display: block;
|
||||
border-bottom: 1px solid rgba(white, 0.5);
|
||||
sib-route {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
}
|
||||
&[active] {
|
||||
background-color: $col-highlight-bg;
|
||||
color: $col-highlight-fg;
|
||||
}
|
||||
> div {
|
||||
width: max-content;
|
||||
padding: 2em;
|
||||
}
|
||||
&[id-prefix] {
|
||||
display: none;
|
||||
}
|
||||
> sib-display {
|
||||
display: block;
|
||||
font-size: 0.9em;
|
||||
color: #aaa;
|
||||
> div {
|
||||
margin-bottom: 1.5em;
|
||||
> sib-display {
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
padding: 0.5em 2em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* sub menu (right menu) */
|
||||
|
||||
#mainContainer > div {
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
align-items: flex-start;
|
||||
> sib-router {
|
||||
display: block;
|
||||
background-color: #ccc;
|
||||
sib-route {
|
||||
display: block;
|
||||
> div {
|
||||
position: relative;
|
||||
padding: 1em 2em;
|
||||
border-bottom: 1px solid #888;
|
||||
}
|
||||
&[active] {
|
||||
font-weight: bold;
|
||||
> div:before {
|
||||
content: '<';
|
||||
position: absolute;
|
||||
transform: translateX(-150%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
> div {
|
||||
margin: 0.5em;
|
||||
flex: 1 1 0px;
|
||||
}
|
||||
}
|
@ -1,103 +0,0 @@
|
||||
%title{
|
||||
color: $pal-black;
|
||||
}
|
||||
|
||||
// Bootstrap classes
|
||||
%btn {
|
||||
display: inline-block;
|
||||
font-weight: 400;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
border: 1px solid transparent;
|
||||
padding: .375rem .75rem;
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
border-radius: 100em;
|
||||
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
|
||||
|
||||
&:not(:disabled):not(.disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
%btn-primary {
|
||||
color: $col-highlight-fg;
|
||||
background-color: $col-highlight-bg;
|
||||
border-color: $col-highlight-bg;
|
||||
}
|
||||
|
||||
%btn-link {
|
||||
font-weight: 400;
|
||||
color: $col-highlight-bg;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
%form-group {
|
||||
display: block;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
%form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: .375rem .75rem;
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
color: #495057;
|
||||
background-color: #fff;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid #ced4da;
|
||||
border-radius: .25rem;
|
||||
transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;
|
||||
}
|
||||
|
||||
%form-control-sm {
|
||||
padding: .25rem .5rem;
|
||||
font-size: .875rem;
|
||||
line-height: 1.5;
|
||||
border-radius: .2rem;
|
||||
}
|
||||
|
||||
%td {
|
||||
padding: .65rem;
|
||||
vertical-align: top;
|
||||
border-top: 1px solid #dee2e6;
|
||||
}
|
||||
|
||||
// Custom mixins
|
||||
%self-clear {
|
||||
&::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin list-reset($deep:0) {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: block;
|
||||
list-style: none;
|
||||
@if ($deep == 0) {
|
||||
> li {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: block;
|
||||
list-style: none;
|
||||
}
|
||||
} @else {
|
||||
ul,
|
||||
ol,
|
||||
li {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: block;
|
||||
list-style: none;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
#project-profile {
|
||||
[name='title'] {
|
||||
font-size: 1.5em;
|
||||
padding: .5em 0;
|
||||
margin-bottom: .5em;
|
||||
border-bottom: 1px solid grey;
|
||||
color: $pal-black;
|
||||
sib-display-div,
|
||||
div {
|
||||
display: inline;
|
||||
}
|
||||
sib-display-div[name='number'] {
|
||||
padding-right: 0.5em;
|
||||
&:before {
|
||||
content: '#';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
#projects {
|
||||
#projects-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
ldp-display {
|
||||
@extend %td;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 65px;
|
||||
|
||||
&:hover {
|
||||
background-color: $hd-color-faded;
|
||||
color: white;
|
||||
}
|
||||
|
||||
ldp-display-div[name="number"] {
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
ldp-display-client[name="client"] {
|
||||
display: block;
|
||||
width: 70px;
|
||||
|
||||
img {
|
||||
width: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
ldp-display-div[name="name"] {
|
||||
width: 150px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
|
||||
#search-bar{
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#search-icon{
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#search-icon,
|
||||
#close-search-icon{
|
||||
position: absolute;
|
||||
right: .4em;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
margin: auto;
|
||||
display: block;
|
||||
}
|
||||
#search-input {
|
||||
-webkit-appearance: textfield;
|
||||
border-radius: 10em;
|
||||
padding: .2em .5em;
|
||||
border: 1px solid $col-main-fg;
|
||||
& ~ #close-search-icon{
|
||||
opacity: 0;
|
||||
}
|
||||
&:focus{
|
||||
& ~ #close-search-icon{
|
||||
opacity: 1;
|
||||
}
|
||||
& ~ #search-icon{
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: Trebuchet MS, Lucida Grande, Lucida Sans Unicode, Lucida Sans,
|
||||
Tahoma, sans-serif;
|
||||
font-size: 16px;
|
||||
|
||||
background-color: $col-main-bg;
|
||||
color: $col-main-fg;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#subContainer {
|
||||
display: flex;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
#mainContainer {
|
||||
flex: 1 1 0px;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4,h5,h6{
|
||||
color: $pal-black;
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
// palette
|
||||
$pal-white: #e8e8e8;
|
||||
$pal-black: #222;
|
||||
$pal-light-grey: #ddd;
|
||||
$pal-dark-grey: #4a4a4a;
|
||||
$pal-yellow: #fdc815;
|
||||
|
||||
// color
|
||||
$col-main-fg: $pal-dark-grey;
|
||||
$col-main-bg: $pal-white;
|
||||
|
||||
$col-alt-fg: $pal-dark-grey;
|
||||
$col-alt-bg: $pal-light-grey;
|
||||
|
||||
$col-dark-fg: $pal-white;
|
||||
$col-dark-bg: $pal-dark-grey;
|
||||
|
||||
$col-highlight-fg: $pal-black;
|
||||
$col-highlight-bg: $pal-yellow;
|
||||
|
||||
// other color
|
||||
$hd-color: rgb(253, 200, 21);
|
||||
$hd-color-faded: rgba(253, 200, 21, 0.8);
|
||||
$twitter-color: grey;
|
||||
|
||||
$menu-height: 43px;
|
||||
$menu-font-size: 16px;
|
||||
$vertical-menu-width: 50px;
|
||||
$sm-with: 576px;
|
||||
$md-with: 768px;
|
@ -1,23 +0,0 @@
|
||||
// Generic
|
||||
@import "variables";
|
||||
@import "fonts";
|
||||
@import "mixins";
|
||||
@import "classes";
|
||||
@import "styles";
|
||||
@import "forms";
|
||||
|
||||
// Specific
|
||||
@import "header";
|
||||
@import "menu";
|
||||
|
||||
@import "dashboard";
|
||||
@import "members";
|
||||
@import "member";
|
||||
@import "job-offers";
|
||||
@import "edit-profile";
|
||||
@import "projects";
|
||||
@import "project";
|
||||
@import "channels";
|
||||
@import "channel";
|
||||
@import "search";
|
||||
@import "chat";
|
@ -1,10 +0,0 @@
|
||||
from django.contrib import admin
|
||||
from .models import Member, Skill, Project, Client, Cell, Channel, Role
|
||||
|
||||
admin.site.register(Member)
|
||||
admin.site.register(Skill)
|
||||
admin.site.register(Project)
|
||||
admin.site.register(Client)
|
||||
admin.site.register(Cell)
|
||||
admin.site.register(Channel)
|
||||
admin.site.register(Role)
|
@ -1,83 +0,0 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
|
||||
|
||||
class Member(models.Model):
|
||||
avatar = models.URLField(blank=True)
|
||||
available = models.NullBooleanField(blank=True)
|
||||
bio = models.CharField(max_length=255, blank=True, null=True)
|
||||
cell = models.ForeignKey("Cell", on_delete=models.DO_NOTHING, blank=True, null=True)
|
||||
jabberID = models.CharField(max_length=255, blank=True, null=True)
|
||||
jabberRoom = models.NullBooleanField(blank=True)
|
||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||
number = models.CharField(max_length=255, blank=True, null=True)
|
||||
projects = models.ManyToManyField("Project", blank=True)
|
||||
pseudo = models.CharField(max_length=255, blank=True, null=True)
|
||||
roles = models.ManyToManyField("Role", blank=True)
|
||||
skills = models.ManyToManyField("Skill", blank=True)
|
||||
website = models.URLField(blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return 'Profil de {} '.format(self.user.get_full_name())
|
||||
|
||||
@receiver(post_save, sender=User)
|
||||
def create_user_profile(sender, instance, created, **kwargs):
|
||||
if created:
|
||||
Member.objects.create(user=instance)
|
||||
else:
|
||||
instance.member.save()
|
||||
|
||||
|
||||
class Skill(models.Model):
|
||||
name = models.CharField(max_length=255, default='')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Role(models.Model):
|
||||
name = models.CharField(max_length=255, default='')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Project(models.Model):
|
||||
name = models.CharField(max_length=255, default='')
|
||||
number = models.PositiveIntegerField(default='0', blank=True)
|
||||
client = models.ForeignKey("Client", on_delete=models.DO_NOTHING)
|
||||
team = models.ManyToManyField("Member", blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Client(models.Model):
|
||||
name = models.CharField(max_length=255, default='')
|
||||
address = models.CharField(max_length=255, default='')
|
||||
logo = models.URLField()
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Cell(models.Model):
|
||||
name = models.CharField(max_length=255, default='')
|
||||
city = models.CharField(max_length=255, default='')
|
||||
country = models.CharField(max_length=255, default='')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Channel(models.Model):
|
||||
name = models.CharField(max_length=255, default='')
|
||||
description = models.CharField(max_length=255, default='')
|
||||
members = models.ManyToManyField("Member", blank=True)
|
||||
owner = models.ForeignKey("Member", related_name="owned_chatrooms", on_delete=models.DO_NOTHING)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
@ -1,40 +0,0 @@
|
||||
"""hdappserver URL Configuration
|
||||
|
||||
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||
https://docs.djangoproject.com/en/1.11/topics/http/urls/
|
||||
Examples:
|
||||
Function views
|
||||
1. Add an import: from my_app import views
|
||||
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
|
||||
Class-based views
|
||||
1. Add an import: from other_app.views import Home
|
||||
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
|
||||
Including another URLconf
|
||||
1. Import the include() function: from django.conf.urls import url, include
|
||||
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
|
||||
"""
|
||||
from django.conf.urls import url, include
|
||||
from django.contrib import admin
|
||||
from django.views.generic import TemplateView
|
||||
from djangoldp.views import LDPViewSet
|
||||
from django.conf import settings
|
||||
from .models import Member, Skill, Project, Client, Cell, Channel, Role
|
||||
from .views import userinfocustom
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^$', TemplateView.as_view(template_name="index.html"), name="index"),
|
||||
url(r'^accounts/', include('django.contrib.auth.urls')),
|
||||
url(r'^admin/', admin.site.urls),
|
||||
url(r'^channels/', LDPViewSet.urls(model=Channel, nested_field="members")),
|
||||
url(r'^cells/', LDPViewSet.urls(model=Cell)),
|
||||
url(r'^clients/', LDPViewSet.urls(model=Client)),
|
||||
url(r'^members/', LDPViewSet.urls(model=Member, nested_field="skills")),
|
||||
url(r'^projects/', LDPViewSet.urls(model=Project, nested_field="team")),
|
||||
url(r'^skills/', LDPViewSet.urls(model=Skill)),
|
||||
url(r'^openid/userinfo', userinfocustom),
|
||||
url(r'^openid/', include('oidc_provider.urls', namespace='oidc_provider')),
|
||||
url(r'^role/', LDPViewSet.urls(model=Role)),
|
||||
url(r'^users/', LDPViewSet.urls(model=settings.AUTH_USER_MODEL)),
|
||||
]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user