update: convert to pug
This commit is contained in:
parent
a7d8a91457
commit
facbd376bc
2
.gitignore
vendored
2
.gitignore
vendored
@ -10,6 +10,6 @@ dist/html/*
|
||||
|
||||
# Files
|
||||
index.html
|
||||
config.php
|
||||
config.pug
|
||||
issues.md
|
||||
oidc-client-preprod-config.json
|
||||
|
21
Makefile
Normal file
21
Makefile
Normal file
@ -0,0 +1,21 @@
|
||||
default: install
|
||||
|
||||
config.pug:
|
||||
cp config-sample.pug config.pug
|
||||
|
||||
dist/css/hd-app.css: src/scss/main.scss
|
||||
npx grunt sass
|
||||
|
||||
install:
|
||||
git submodule update --init --recursive
|
||||
npm install
|
||||
|
||||
build: config.pug
|
||||
npx grunt sass
|
||||
npx pug --pretty -p index.pug < index.pug > index.html
|
||||
|
||||
serve: dist/css/hd-app.css
|
||||
php -S 127.0.0.1:8080 router.php
|
||||
|
||||
|
||||
.PHONY: default install build serve
|
23
README.md
23
README.md
@ -1,12 +1,19 @@
|
||||
# HD app
|
||||
HD app is the magic tool that allows the Happy Dev network to thrive in a decentralized way.
|
||||
|
||||
## Install
|
||||
* `git clone --recurse-submodules https://git.happy-dev.fr/happy-dev/hd-app.git`
|
||||
* `cd hd-app`
|
||||
* `cp config-sample.php config.php`
|
||||
* Edit `config.php` to suit your own setup
|
||||
* `npm install -g grunt-cli`
|
||||
* `npm install`
|
||||
|
||||
## Compile SASS
|
||||
* `grunt watch`
|
||||
clone then:
|
||||
|
||||
* `make install`
|
||||
|
||||
## Build
|
||||
|
||||
Compile sass & pug
|
||||
|
||||
* `make build`
|
||||
|
||||
## Run server
|
||||
|
||||
require PHP
|
||||
* `make serve`
|
||||
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
$dn = getenv("DN");// Domain Name of the app
|
||||
$sdn = getenv("SDN");// Server Domain Name
|
||||
|
||||
if ($dn === NULL) {
|
||||
$dn = 'http://hd-app.local';
|
||||
$sdn = 'http://localhost:8000';
|
||||
}
|
3
config-sample.pug
Normal file
3
config-sample.pug
Normal file
@ -0,0 +1,3 @@
|
||||
- var dn = 'http://127.0.0.1:8080'
|
||||
- var sdn = 'http://127.0.0.1:8000'
|
||||
- v = Math.random()
|
74
index.php
74
index.php
@ -1,74 +0,0 @@
|
||||
<?php
|
||||
// Some useful variables
|
||||
$v = rand();// Used to avoid abusive caching by the browser
|
||||
require_once("config.php");// Use "config-sample.php" to create your own
|
||||
?>
|
||||
<!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</title>
|
||||
|
||||
<?php
|
||||
// Prod/Dev setup
|
||||
if (in_array($dn, array('https://app.happy-dev.fr', 'https://staging-app.happy-dev.fr'))) {
|
||||
require_once("src/html/dependencies-prod.php");
|
||||
} else {
|
||||
require_once("src/html/dependencies-dev.php");
|
||||
}
|
||||
?>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<?php require_once('src/html/menu.html'); ?>
|
||||
|
||||
<main id="mainContainer" class="container-fluid">
|
||||
<?php require_once('src/html/dashboard.html'); ?>
|
||||
<?php require_once('src/html/members.html'); ?>
|
||||
<?php require_once('src/html/member.php'); ?>
|
||||
<?php require_once('src/html/projects.html'); ?>
|
||||
<?php require_once('src/html/project.php'); ?>
|
||||
<?php require_once('src/html/client-creation.html'); ?>
|
||||
<?php require_once('src/html/channels.html'); ?>
|
||||
<?php require_once('src/html/channel.php'); ?>
|
||||
<?php require_once('src/html/search.html'); ?>
|
||||
</main>
|
||||
|
||||
<sib-chat
|
||||
id="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
|
||||
></sib-chat>
|
||||
|
||||
<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);
|
||||
|
||||
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;
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
48
index.pug
Normal file
48
index.pug
Normal file
@ -0,0 +1,48 @@
|
||||
<!DOCTYPE html>
|
||||
include config.pug
|
||||
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 src/html/dependencies-prod.pug
|
||||
else
|
||||
include src/html/dependencies-dev.pug
|
||||
body
|
||||
include src/html/menu.pug
|
||||
main#mainContainer.container-fluid
|
||||
include src/html/dashboard.pug
|
||||
include src/html/members.pug
|
||||
include src/html/member.pug
|
||||
include src/html/projects.pug
|
||||
include src/html/project.pug
|
||||
include src/html/client-creation.pug
|
||||
include src/html/channels.pug
|
||||
include src/html/channel.pug
|
||||
include src/html/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);
|
||||
|
||||
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,10 +1,10 @@
|
||||
{
|
||||
"authority": "https://test-paris.happy-dev.fr/openid/",
|
||||
"client_id": "125356",
|
||||
"redirect_uri": "http://hd-app.local",
|
||||
"redirect_uri": "http://127.0.0.1:8080",
|
||||
"response_type": "id_token token",
|
||||
"scope": "openid profile email",
|
||||
"automaticSilentRenew": true,
|
||||
"silent_redirect_uri": "http://hd-app.local",
|
||||
"silent_redirect_uri": "http://127.0.0.1:8080",
|
||||
"loadUserInfo": true
|
||||
}
|
||||
|
8
router.php
Normal file
8
router.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
if (PHP_SAPI == 'cli-server') {
|
||||
$url = parse_url($_SERVER['REQUEST_URI']);
|
||||
$file = __DIR__ . $url['path'];
|
||||
if (is_file($file)) return false;
|
||||
}
|
||||
include "index.html";
|
@ -1,4 +0,0 @@
|
||||
<div id="calendar" style="display: none">
|
||||
<h1 class="page-title">Agenda</h1>
|
||||
<ldp-calendar data-src="http://lucky.alwaysdata.net/api/events/" style="display: block; height: 300px; width: 500px;"></ldp-calendar>
|
||||
</div>
|
6
src/html/calendar.pug
Normal file
6
src/html/calendar.pug
Normal file
@ -0,0 +1,6 @@
|
||||
#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,2 +0,0 @@
|
||||
<div id="channel-chat" class="chat-view" style="display: none" bind-resources></div>
|
||||
|
1
src/html/channel-chat.pug
Normal file
1
src/html/channel-chat.pug
Normal file
@ -0,0 +1 @@
|
||||
#channel-chat.chat-view(style='display: none', bind-resources='')
|
@ -1,9 +0,0 @@
|
||||
<div id="channel-create" style="display: none">
|
||||
<sib-form
|
||||
data-src="<?php echo $sdn; ?>/channels/"
|
||||
range-owner="<?php echo $sdn; ?>/members/"
|
||||
widget-members="sib-form-multiple-dropdown"
|
||||
range-members="<?php echo $sdn; ?>/members/"
|
||||
></sib-form>
|
||||
</div>
|
||||
|
7
src/html/channel-create.pug
Normal file
7
src/html/channel-create.pug
Normal file
@ -0,0 +1,7 @@
|
||||
#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,8 +0,0 @@
|
||||
<div id="channel-edit" style="display: none">
|
||||
<sib-form
|
||||
range-owner="<?php echo $sdn; ?>/members/"
|
||||
widget-members="sib-form-multiple-dropdown"
|
||||
range-members="<?php echo $sdn; ?>/members/"
|
||||
bind-resources
|
||||
></sib-form>
|
||||
</div>
|
7
src/html/channel-edit.pug
Normal file
7
src/html/channel-edit.pug
Normal file
@ -0,0 +1,7 @@
|
||||
#channel-edit(style='display: none')
|
||||
sib-form(
|
||||
range-owner=`${sdn}/members/`,
|
||||
widget-members='sib-form-multiple-dropdown',
|
||||
range-members=`${sdn}/members/`,
|
||||
bind-resources=''
|
||||
)
|
@ -1,4 +1,4 @@
|
||||
<script>
|
||||
script.
|
||||
document.addEventListener("WebComponentsReady", function(event) {
|
||||
class HDAppMember extends SIBWidget {
|
||||
get template() {
|
||||
@ -18,21 +18,19 @@
|
||||
}
|
||||
customElements.define("hdapp-member", HDAppMember);
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="channel-profile" style="display: none">
|
||||
<sib-display
|
||||
data-fields="name, description, owner"
|
||||
widget-owner="hdapp-member"
|
||||
bind-resources
|
||||
></sib-display>
|
||||
#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=''
|
||||
)
|
||||
|
||||
<h2 class="section skills">Participants</h2>
|
||||
<sib-display
|
||||
id-suffix="members"
|
||||
data-fields="avatar, user"
|
||||
widget-avatar="sib-display-img"
|
||||
widget-user="hdapp-userinfo"
|
||||
bind-resources
|
||||
></sib-display>
|
||||
</div>
|
@ -1,23 +0,0 @@
|
||||
<div id="channel" style="display: none">
|
||||
<sib-router id="channel-router" default-route="channel-profile">
|
||||
<sib-route name="channel-chat">
|
||||
<button>Chat</button>
|
||||
</sib-route>
|
||||
<sib-route name="channel-profile">
|
||||
<button>Info</button>
|
||||
</sib-route>
|
||||
<sib-route name="channel-edit">
|
||||
<button>Éditer</button>
|
||||
</sib-route>
|
||||
<sib-route name="channel-create">
|
||||
<button>Nouveau</button>
|
||||
</sib-route>
|
||||
</sib-router>
|
||||
|
||||
<div id="network-views-container">
|
||||
<?php require_once('channel-chat.html'); ?>
|
||||
<?php require_once('channel-profile.html'); ?>
|
||||
<?php require_once('channel-edit.html'); ?>
|
||||
<?php require_once('channel-create.html'); ?>
|
||||
</div>
|
||||
</div>
|
15
src/html/channel.pug
Normal file
15
src/html/channel.pug
Normal file
@ -0,0 +1,15 @@
|
||||
#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,9 +0,0 @@
|
||||
<div id="channels" style="display: none">
|
||||
<sib-display
|
||||
id="channels-list"
|
||||
data-src="<?php echo $sdn; ?>/channels/"
|
||||
data-fields="name, description"
|
||||
search-fields="name, description"
|
||||
next="channel"
|
||||
></sib-display>
|
||||
</div>
|
7
src/html/channels.pug
Normal file
7
src/html/channels.pug
Normal file
@ -0,0 +1,7 @@
|
||||
#channels(style='display: none')
|
||||
sib-display#channels-list(
|
||||
data-src=`${sdn}/channels/`,
|
||||
data-fields='name, description',
|
||||
search-fields='name, description',
|
||||
next='channel'
|
||||
)
|
@ -1,7 +0,0 @@
|
||||
<div id="client-create" style="display: none">
|
||||
<sib-form
|
||||
data-src="<?php echo $sdn; ?>/clients/"
|
||||
data-fields="name, address, logo"
|
||||
></sib-form>
|
||||
</div>
|
||||
|
5
src/html/client-creation.pug
Normal file
5
src/html/client-creation.pug
Normal file
@ -0,0 +1,5 @@
|
||||
#client-create(style='display: none')
|
||||
sib-form(
|
||||
data-src=`${sdn}/clients/`,
|
||||
data-fields='name, address, logo'
|
||||
)
|
@ -1,26 +0,0 @@
|
||||
<div id="dashboard" style="display: none">
|
||||
<!--<form>-->
|
||||
<!--<div class="form-group">-->
|
||||
<!--<input type="text" class="form-control form-control-sm" id="search-input" placeholder="Recherche" aria-describedby="search-help" autofocus />-->
|
||||
<!--<small id="search-help" class="form-text text-muted">* parmi les membres, les projets et les groupes de discussion</small>-->
|
||||
<!--</div>-->
|
||||
<!--</form>-->
|
||||
|
||||
<div class="list-condensed">
|
||||
<ldp-display
|
||||
id="to-user-profile"
|
||||
data-src="<?php echo $sdn; ?>/members/1/"
|
||||
set-name="firstname, name-separator, lastname"
|
||||
value-name-separator=" "
|
||||
data-fields="avatar, name"
|
||||
widget-avatar="ldp-display-img"
|
||||
></ldp-display>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.querySelector("#to-user-profile").addEventListener("click", () => {
|
||||
document.getElementById("navbar-router").navigate("member");
|
||||
document.getElementById("member-page-router").navigate("member-detail");
|
||||
});
|
||||
</script>
|
||||
</div>
|
21
src/html/dashboard.pug
Normal file
21
src/html/dashboard.pug
Normal file
@ -0,0 +1,21 @@
|
||||
#dashboard(style='display: none')
|
||||
//-
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control form-control-sm" id="search-input" placeholder="Recherche" aria-describedby="search-help" autofocus />
|
||||
<small id="search-help" class="form-text text-muted">* parmi les membres, les projets et les groupes de discussion</small>
|
||||
</div>
|
||||
</form>
|
||||
.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,19 +0,0 @@
|
||||
<!-- Stylesheets -->
|
||||
<link rel="stylesheet" href="<?php echo $dn; ?>/node_modules/bootstrap/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="<?php echo $dn; ?>/node_modules/cropper/dist/cropper.min.css" />
|
||||
<link rel="stylesheet" href="<?php echo $dn; ?>/node_modules/font-awesome/css/font-awesome.min.css" />
|
||||
<link rel="stylesheet" href="<?php echo $dn; ?>/dist/css/hd-app.css?v=<?php echo $v ?>" />
|
||||
|
||||
<!-- Javascript -->
|
||||
<script type="text/javascript" src="<?php echo $dn; ?>/node_modules/jquery/dist/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="<?php echo $dn; ?>/node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="<?php echo $dn; ?>/node_modules/cropper/dist/cropper.min.js"></script>
|
||||
<script type="text/javascript" src="<?php echo $dn; ?>/dist/lib/webcomponentsjs/webcomponents-loader.js"></script>
|
||||
<script type="text/javascript" src="<?php echo $dn; ?>/src/js/hd-app.js?v=<?php echo $v ?>"></script>
|
||||
<script src="<?php echo $dn; ?>/dist/lib/sib-chat/3rdparty/sib-oidc-client.js?v=<?php echo $v ?>"></script>
|
||||
|
||||
<!-- Web components -->
|
||||
<link rel="import" href="<?php echo $dn; ?>/dist/lib/sib-core/sib-display.html?v=<?php echo $v ?>" />
|
||||
<link rel="import" href="<?php echo $dn; ?>/dist/lib/sib-router/sib-router.html?v=<?php echo $v ?>" />
|
||||
<link rel="import" href="<?php echo $dn; ?>/dist/lib/sib-chat/sib-chat.html">
|
||||
|
16
src/html/dependencies-dev.pug
Normal file
16
src/html/dependencies-dev.pug
Normal file
@ -0,0 +1,16 @@
|
||||
// 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}/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,19 +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="<?php echo $dn; ?>/dist/css/hd-app.css?v=<?php echo $v ?>" />
|
||||
|
||||
<!-- Javascript -->
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||
<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>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.bootcss.com/cropper/4.0.0/cropper.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.2.0/webcomponents-loader.js" integrity="sha256-fUVqCtpScUF69qkFkeuHmcShr2N2UleRQJhRG4etHds=" crossorigin="anonymous"></script>
|
||||
<script src="<?php echo $dn; ?>/src/js/hd-app.js?v=<?php echo $v ?>"></script>
|
||||
<script src="<?php echo $cdn; ?>/sib-chat/3rdparty/sib-oidc-client.js?v=<?php echo $v ?>"></script>
|
||||
|
||||
<!-- Web components -->
|
||||
<link rel="import" href="<?php echo $cdn; ?>/sib-core/sib-display.html?v=<?php echo $v ?>" />
|
||||
<link rel="import" href="<?php echo $cdn; ?>/sib-router/sib-router.html?v=<?php echo $v ?>" />
|
||||
<link rel="import" href="<?php echo $cdn; ?>/sib-chat/sib-chat.html">
|
34
src/html/dependencies-prod.pug
Normal file
34
src/html/dependencies-prod.pug
Normal file
@ -0,0 +1,34 @@
|
||||
// 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,3 +0,0 @@
|
||||
<div id="drive" style="display: none">
|
||||
<h1 class="page-title">Drive</h1>
|
||||
</div>
|
2
src/html/drive.pug
Normal file
2
src/html/drive.pug
Normal file
@ -0,0 +1,2 @@
|
||||
#drive(style='display: none')
|
||||
h1.page-title Drive
|
@ -1 +0,0 @@
|
||||
<div id="member-chat" class="chat-view" style="display: none" bind-resources></div>
|
1
src/html/member-chat.pug
Normal file
1
src/html/member-chat.pug
Normal file
@ -0,0 +1 @@
|
||||
#member-chat.chat-view(style='display: none', bind-resources='')
|
@ -1,51 +1,41 @@
|
||||
<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}" />`;
|
||||
// }
|
||||
// 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"
|
||||
</script>
|
||||
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"
|
||||
|
||||
<div id="member-edit" style="display: none">
|
||||
<label for="avatar-input" class="d-none">
|
||||
<img id="avatar-preview" src="" style="width: 100%;"/>
|
||||
</label>
|
||||
<input class="d-none" type="file" accept="image/*" id="avatar-input" name="avatar" value="" />
|
||||
#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
|
||||
|
||||
<sib-form
|
||||
class="edit-form"
|
||||
data-fields="user, avatar, bio, cell, jabberID, number, pseudo, skills, website"
|
||||
widget-user="hdapp-usereditinfo"
|
||||
range-cell="<?php echo $sdn; ?>/cells/"
|
||||
widget-skills="sib-form-multiple-dropdown"
|
||||
range-skills="<?php echo $sdn; ?>/skills/"
|
||||
bind-resources
|
||||
></sib-form>
|
||||
</div>
|
||||
|
||||
<div id="crop-modal">
|
||||
<div class="crop-wrapper">
|
||||
<img id="crop-preview" src="" />
|
||||
</div>
|
||||
|
||||
<div class="control-bar">
|
||||
<button id="cancel-img-cropping" class="btn btn-link">Annuler</button>
|
||||
<i id="rotate-img" class="fa fa-undo" aria-hidden="true"></i>
|
||||
<button id="crop-img" class="btn btn-link">Valider</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
script.
|
||||
// Constant declaration
|
||||
const avatarPreview = document.querySelector("#avatar-preview");
|
||||
const avatarInput = document.querySelector("#avatar-input");
|
||||
@ -105,4 +95,3 @@
|
||||
avatarPreview.src = $cropPreview.cropper("getCroppedCanvas").toDataURL()
|
||||
closeCropping();
|
||||
});
|
||||
</script>
|
@ -1,13 +0,0 @@
|
||||
<div id="member-profile" style="display: none">
|
||||
<sib-display
|
||||
id="member-info"
|
||||
data-fields="avatar, user, before-pseudo, pseudo, bio, cell, number, roles, website, skills"
|
||||
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
|
||||
></sib-display>
|
||||
</div>
|
11
src/html/member-profile.pug
Normal file
11
src/html/member-profile.pug
Normal file
@ -0,0 +1,11 @@
|
||||
#member-profile(style='display: none')
|
||||
sib-display#member-info(
|
||||
data-fields='avatar, user, before-pseudo, pseudo, bio, cell, number, roles, website, skills',
|
||||
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,19 +0,0 @@
|
||||
<div id="member" style="display: none">
|
||||
<sib-router id="member-router" default-route="member-profile">
|
||||
<sib-route name="member-chat">
|
||||
<button>Chat</button>
|
||||
</sib-route>
|
||||
<sib-route name="member-profile">
|
||||
<button>Voir</button>
|
||||
</sib-route>
|
||||
<sib-route name="member-edit">
|
||||
<button>Éditer</button>
|
||||
</sib-route>
|
||||
</sib-router>
|
||||
|
||||
<div id="member-views-container">
|
||||
<?php require_once('member-chat.html'); ?>
|
||||
<?php require_once('member-profile.html'); ?>
|
||||
<?php require_once('member-edit.html'); ?>
|
||||
</div>
|
||||
</div>
|
12
src/html/member.pug
Normal file
12
src/html/member.pug
Normal file
@ -0,0 +1,12 @@
|
||||
#member(style='display: none')
|
||||
sib-router#member-router(default-route='member-profile')
|
||||
sib-route(name='member-chat')
|
||||
button Chat
|
||||
sib-route(name='member-profile')
|
||||
button Voir
|
||||
sib-route(name='member-edit')
|
||||
button Éditer
|
||||
#member-views-container
|
||||
include member-chat.pug
|
||||
include member-profile.pug
|
||||
include member-edit.pug
|
@ -1,4 +1,4 @@
|
||||
<script>
|
||||
script.
|
||||
document.addEventListener("WebComponentsReady", function(event) {
|
||||
class HDAppUserInfo extends SIBDisplayLookupList {
|
||||
get parentElement() {return "div"}
|
||||
@ -50,22 +50,20 @@
|
||||
}
|
||||
customElements.define("hdapp-usercell", HDAppCell);
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="members" class="view" style="display: none">
|
||||
<sib-display
|
||||
id="profiles-list"
|
||||
data-src="<?php echo $sdn; ?>/members/"
|
||||
data-fields="avatar, user, before-pseudo, pseudo, bio, cell, skills"
|
||||
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"
|
||||
></sib-display>
|
||||
</div>
|
||||
#members.view(style='display: none')
|
||||
sib-display#profiles-list(
|
||||
data-src=`${sdn}/members/`,
|
||||
data-fields='avatar, user, before-pseudo, pseudo, bio, cell, skills',
|
||||
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,37 +0,0 @@
|
||||
<nav class="navbar bg-white fixed-top border-bottom pb-0 d-md-flex" id="navbar">
|
||||
|
||||
<sib-router id="navbar-router" class="navbar-nav" default-route="members">
|
||||
<sib-route id="menu-title" class="nav-item" name="dashboard">
|
||||
HAPPY DEV
|
||||
</sib-route>
|
||||
|
||||
<div id="menu-items" class="col-7 col-md-7">
|
||||
<sib-route class="nav-item pb-2 active align-self-stretch text-center text-md-left" name="members">
|
||||
<i class="fa fa-users" aria-hidden="true"></i>
|
||||
<span class="d-none d-md-inline">Membres</span>
|
||||
</sib-route>
|
||||
<sib-route class="d-none" name="member" id-prefix="<?php echo $sdn; ?>/members/"></sib-route>
|
||||
|
||||
<sib-route class="nav-item pb-2 align-self-stretch text-center text-md-left" name="projects">
|
||||
<i class="fa fa-tasks" aria-hidden="true"></i>
|
||||
<span class="d-none d-md-inline"> Projets</span>
|
||||
</sib-route>
|
||||
<sib-route class="d-none" name="project" id-prefix="<?php echo $sdn; ?>/projects/"></sib-route>
|
||||
<sib-route name="client-create">New client</sib-route>
|
||||
|
||||
<sib-route class="nav-item pb-2 align-self-stretch text-center text-md-left" name="channels">
|
||||
<i class="fa fa-comments" aria-hidden="true"></i>
|
||||
<span class="d-none d-md-inline"> Network</span>
|
||||
</sib-route>
|
||||
<sib-route class="d-none" name="channel" id-prefix="<?php echo $sdn; ?>/channels/"></sib-route>
|
||||
</div>
|
||||
|
||||
<div class="col-2 col-md-1"></div>
|
||||
</sib-router>
|
||||
|
||||
<div id="search-bar">
|
||||
<input id="search-input" class="form-control" type="search" placeholder="ctrl + k"/>
|
||||
<i id="search-icon" class="fa fa-search" aria-hidden="true"></i>
|
||||
<i id="close-search-icon" class="fa fa-times" aria-hidden="true"></i>
|
||||
</div>
|
||||
</nav>
|
23
src/html/menu.pug
Normal file
23
src/html/menu.pug
Normal file
@ -0,0 +1,23 @@
|
||||
nav#navbar.navbar.bg-white.fixed-top.border-bottom.pb-0.d-md-flex
|
||||
sib-router#navbar-router.navbar-nav(default-route='members')
|
||||
sib-route#menu-title.nav-item(name='dashboard')
|
||||
| HAPPY DEV
|
||||
#menu-items.col-7.col-md-7
|
||||
sib-route.nav-item.pb-2.active.align-self-stretch.text-center.text-md-left(name='members')
|
||||
i.fa.fa-users(aria-hidden='true')
|
||||
span.d-none.d-md-inline Membres
|
||||
sib-route.d-none(name='member', id-prefix=`${sdn}/members/`)
|
||||
sib-route.nav-item.pb-2.align-self-stretch.text-center.text-md-left(name='projects')
|
||||
i.fa.fa-tasks(aria-hidden='true')
|
||||
span.d-none.d-md-inline Projets
|
||||
sib-route.d-none(name='project', id-prefix=`${sdn}/projects/`)
|
||||
sib-route(name='client-create') New client
|
||||
sib-route.nav-item.pb-2.align-self-stretch.text-center.text-md-left(name='channels')
|
||||
i.fa.fa-comments(aria-hidden='true')
|
||||
span.d-none.d-md-inline Network
|
||||
sib-route.d-none(name='channel', id-prefix=`${sdn}/channels/`)
|
||||
.col-2.col-md-1
|
||||
#search-bar
|
||||
input#search-input.form-control(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 +0,0 @@
|
||||
<div id="project-chat" class="chat-view" style="display: none" bind-resources></div>
|
1
src/html/project-chat.pug
Normal file
1
src/html/project-chat.pug
Normal file
@ -0,0 +1 @@
|
||||
#project-chat.chat-view(style='display: none', bind-resources='')
|
@ -1,8 +0,0 @@
|
||||
<div id="project-create" style="display: none">
|
||||
<sib-form
|
||||
data-src="<?php echo $sdn; ?>/projects/"
|
||||
range-client="<?php echo $sdn; ?>/clients/"
|
||||
widget-team="sib-form-multiple-dropdown"
|
||||
range-team="<?php echo $sdn; ?>/members/"
|
||||
></sib-form>
|
||||
</div>
|
7
src/html/project-create.pug
Normal file
7
src/html/project-create.pug
Normal file
@ -0,0 +1,7 @@
|
||||
#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,9 +0,0 @@
|
||||
<div id="project-edit" style="display: none">
|
||||
<sib-form
|
||||
range-client="<?php echo $sdn; ?>/clients/"
|
||||
widget-team="sib-form-multiple-dropdown"
|
||||
range-team="<?php echo $sdn; ?>/members/"
|
||||
bind-resources
|
||||
></sib-form>
|
||||
</div>
|
||||
|
7
src/html/project-edit.pug
Normal file
7
src/html/project-edit.pug
Normal file
@ -0,0 +1,7 @@
|
||||
#project-edit(style='display: none')
|
||||
sib-form(
|
||||
range-client=`${sdn}/clients/`,
|
||||
widget-team='sib-form-multiple-dropdown',
|
||||
range-team=`${sdn}/members/`,
|
||||
bind-resources=''
|
||||
)
|
@ -1,19 +0,0 @@
|
||||
<div id="project-profile" style="display: none">
|
||||
<sib-display
|
||||
data-fields="name, number, client"
|
||||
widget-client="hdapp-client"
|
||||
bind-resources
|
||||
></sib-display>
|
||||
|
||||
<h2>Team</h2>
|
||||
<sib-display
|
||||
class="members-list-condensed"
|
||||
id-suffix="team"
|
||||
data-fields="avatar, user"
|
||||
widget-avatar="sib-display-img"
|
||||
widget-user="hdapp-userinfo"
|
||||
next="member"
|
||||
bind-resources
|
||||
></sib-display>
|
||||
</div>
|
||||
|
15
src/html/project-profile.pug
Normal file
15
src/html/project-profile.pug
Normal file
@ -0,0 +1,15 @@
|
||||
#project-profile(style='display: none')
|
||||
sib-display(
|
||||
data-fields='name, number, client',
|
||||
widget-client='hdapp-client',
|
||||
bind-resources=''
|
||||
)
|
||||
h2 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,23 +0,0 @@
|
||||
<div id="project" style="display: none">
|
||||
<sib-router id="project-router" default-route="project-profile">
|
||||
<sib-route name="project-chat">
|
||||
<button>Chat</button>
|
||||
</sib-route>
|
||||
<sib-route name="project-profile">
|
||||
<button>Voir</button>
|
||||
</sib-route>
|
||||
<sib-route name="project-edit">
|
||||
<button>Éditer</button>
|
||||
</sib-route>
|
||||
<sib-route name="project-create">
|
||||
<button>Nouveau</button>
|
||||
</sib-route>
|
||||
</sib-router>
|
||||
|
||||
<div id="project-views-container">
|
||||
<?php require_once('project-chat.html'); ?>
|
||||
<?php require_once('project-profile.html'); ?>
|
||||
<?php require_once('project-edit.html'); ?>
|
||||
<?php require_once('project-create.html'); ?>
|
||||
</div>
|
||||
</div>
|
15
src/html/project.pug
Normal file
15
src/html/project.pug
Normal file
@ -0,0 +1,15 @@
|
||||
#project(style='display: none')
|
||||
sib-router#project-router(default-route='project-profile')
|
||||
sib-route(name='project-chat')
|
||||
button Chat
|
||||
sib-route(name='project-profile')
|
||||
button Voir
|
||||
sib-route(name='project-edit')
|
||||
button Éditer
|
||||
sib-route(name='project-create')
|
||||
button Nouveau
|
||||
#project-views-container
|
||||
include project-chat.pug
|
||||
include project-profile.pug
|
||||
include project-edit.pug
|
||||
include project-create.pug
|
@ -1,4 +1,4 @@
|
||||
<script>
|
||||
script.
|
||||
document.addEventListener("WebComponentsReady", function(event) {
|
||||
class HDAppClient extends SIBWidget {
|
||||
get template() {
|
||||
@ -14,15 +14,12 @@
|
||||
}
|
||||
customElements.define("hdapp-client", HDAppClient);
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="projects" style="display: none">
|
||||
<sib-display
|
||||
data-src="<?php echo $sdn; ?>/projects/"
|
||||
data-fields="number, client, name"
|
||||
widget-client="hdapp-client"
|
||||
search-fields="number, name"
|
||||
next="project"
|
||||
></sib-display>
|
||||
</div>
|
||||
|
||||
#projects(style='display: none')
|
||||
sib-display(
|
||||
data-src=`${sdn}/projects/`,
|
||||
data-fields='number, client, name',
|
||||
widget-client='hdapp-client',
|
||||
search-fields='number, name',
|
||||
next='project'
|
||||
)
|
@ -1,35 +0,0 @@
|
||||
<div id="search-view">
|
||||
<div class="content container-fluid">
|
||||
<ldp-display
|
||||
id="search-results-members"
|
||||
class="list-condensed"
|
||||
data-src="<?php echo $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>
|
||||
|
||||
<ldp-display
|
||||
id="search-results-projects"
|
||||
class="list-condensed"
|
||||
data-src="<?php echo $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>
|
||||
|
||||
<ldp-display
|
||||
id="search-results-channels"
|
||||
data-src="<?php echo $sdn; ?>/channels/"
|
||||
data-fields="name"
|
||||
search-fields="name"
|
||||
next="channel"
|
||||
></ldp-display>
|
||||
</div>
|
||||
</div>
|
26
src/html/search.pug
Normal file
26
src/html/search.pug
Normal file
@ -0,0 +1,26 @@
|
||||
#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'
|
||||
)
|
Loading…
Reference in New Issue
Block a user