diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..6d62fef --- /dev/null +++ b/composer.json @@ -0,0 +1,28 @@ +{ + "name": "provm/publivia", + "descripcion": "Pagina web para PubliVia", + "type": "project", + "require": { + "slim/slim": "^4", + "nyholm/psr7": "^1", + "nyholm/psr7-server": "^1", + "php-di/slim-bridge": "^3", + "rubellum/slim-blade-view": "^0", + "nesbot/carbon": "^2" + }, + "require-dev": { + "phpunit/phpunit": "^8", + "kint-php/kint": "^3" + }, + "authors": [ + { + "name": "Aldarien", + "email": "aldarien85@gmail.com" + } + ], + "autoload": { + "psr-4": { + "ProVM\\Publivia\\Common\\": "common" + } + } +} \ No newline at end of file diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..11b28de --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,4 @@ +RewriteEngine On +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^ index.php [QSA,L] \ No newline at end of file diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..c52dc2c --- /dev/null +++ b/public/index.php @@ -0,0 +1,8 @@ +run(); diff --git a/resources/routes/router.php b/resources/routes/router.php new file mode 100644 index 0000000..6d0c56f --- /dev/null +++ b/resources/routes/router.php @@ -0,0 +1,2 @@ +isDir()) { + continue; + } + include_once $file->getRealPath(); + } +} \ No newline at end of file diff --git a/resources/views/layout/base.blade.php b/resources/views/layout/base.blade.php new file mode 100644 index 0000000..9deb8c1 --- /dev/null +++ b/resources/views/layout/base.blade.php @@ -0,0 +1,5 @@ + + +@include('layout.head') +@include('layout.body') + diff --git a/resources/views/layout/body.blade.php b/resources/views/layout/body.blade.php new file mode 100644 index 0000000..08e95ae --- /dev/null +++ b/resources/views/layout/body.blade.php @@ -0,0 +1,9 @@ + + @include('layout.header') +
+
+ @yield('page_content') +
+
+ @include('layout.footer') + diff --git a/resources/views/layout/footer.blade.php b/resources/views/layout/footer.blade.php new file mode 100644 index 0000000..5ee59a8 --- /dev/null +++ b/resources/views/layout/footer.blade.php @@ -0,0 +1 @@ +@include('layout.scripts') \ No newline at end of file diff --git a/resources/views/layout/head.blade.php b/resources/views/layout/head.blade.php new file mode 100644 index 0000000..d11d32b --- /dev/null +++ b/resources/views/layout/head.blade.php @@ -0,0 +1,5 @@ + + + @yield('page_title') + @include('layout.styles') + diff --git a/resources/views/layout/header.blade.php b/resources/views/layout/header.blade.php new file mode 100644 index 0000000..5afb243 --- /dev/null +++ b/resources/views/layout/header.blade.php @@ -0,0 +1,3 @@ +
+ @include('layout.menu') +
diff --git a/resources/views/layout/menu.blade.php b/resources/views/layout/menu.blade.php new file mode 100644 index 0000000..6c698bc --- /dev/null +++ b/resources/views/layout/menu.blade.php @@ -0,0 +1,4 @@ + diff --git a/resources/views/layout/scripts.blade.php b/resources/views/layout/scripts.blade.php new file mode 100644 index 0000000..b6b604c --- /dev/null +++ b/resources/views/layout/scripts.blade.php @@ -0,0 +1,13 @@ +@if (isset($assets->scripts)) + @foreach ($assets->scripts as $script) + + @endforeach +@endif + + + +@stack('scripts') diff --git a/resources/views/layout/styles.blade.php b/resources/views/layout/styles.blade.php new file mode 100644 index 0000000..2eb95dc --- /dev/null +++ b/resources/views/layout/styles.blade.php @@ -0,0 +1,16 @@ +@if (isset($assets->styles)) + @foreach ($assets->styles as $style) + + @endforeach +@endif +@if (isset($assets->fonts)) + @foreach ($assets->fonts as $font) + + @endforeach +@endif + +@stack('styles') + + diff --git a/setup/app.php b/setup/app.php new file mode 100644 index 0000000..9a83de4 --- /dev/null +++ b/setup/app.php @@ -0,0 +1,60 @@ +addDefinitions($filename); + } + } +} + +$container = $builder->build(); +$app = Bridge::create($container); +try { + $app->setBasePath($container->get('base_url')); +} catch (Exception $e) { +} + +foreach ($folders as $folder) { + $filename = implode(DIRECTORY_SEPARATOR, [ + __DIR__, + $folder, + 'middleware.php' + ]); + if (file_exists($filename)) { + include_once $filename; + } +} + +$filename = implode(DIRECTORY_SEPARATOR, [ + $container->get('folders')->routes, + 'router.php' +]); +if (!file_exists($filename)) { + throw new Exception('Missing router file.'); +} +include_once $filename; \ No newline at end of file diff --git a/setup/common/config.php b/setup/common/config.php new file mode 100644 index 0000000..f858904 --- /dev/null +++ b/setup/common/config.php @@ -0,0 +1,22 @@ + dirname(__DIR__), + 'urls' => function() { + $arr = []; + $arr['base'] = '/provm/demos/provm'; + return (object) $arr; + }, + 'folders' => function() { + $arr = []; + $arr['base'] = dirname(__DIR__, 2); + $arr['resources'] = implode(DIRECTORY_SEPARATOR, [ + $arr['base'], + 'resources' + ]); + $arr['routes'] = implode(DIRECTORY_SEPARATOR, [ + $arr['resources'], + 'routes' + ]); + return (object) $arr; + } +]; \ No newline at end of file diff --git a/setup/composer.php b/setup/composer.php new file mode 100644 index 0000000..b27e3a8 --- /dev/null +++ b/setup/composer.php @@ -0,0 +1,10 @@ + DI\decorate(function($prev, Container $c) { + $arr = (array) $prev; + $arr['templates'] = implode(DIRECTORY_SEPARATOR, [ + $prev->resources, + 'views' + ]); + $arr['cache'] = implode(DIRECTORY_SEPARATOR, [ + $prev->base, + 'cache' + ]); + return (object) $arr; + }), + 'assets' => (object) [ + 'styles' => [ + 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/semantic.min.css' + ], + 'scripts' => [ + 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js', + 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/semantic.min.js' + ], + 'fonts' => [ + 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/brand-icons.woff', + 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/brand-icons.woff2', + 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/icons.woff', + 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/icons.woff2', + 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/outline-icons.woff', + 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/outline-icons.woff2' + ] + ] +]; \ No newline at end of file diff --git a/setup/web/setup.php b/setup/web/setup.php new file mode 100644 index 0000000..dddca7e --- /dev/null +++ b/setup/web/setup.php @@ -0,0 +1,16 @@ + function(Container $c) { + return new ProVM\Common\Define\View( + $c->get('folders')->templates, + $c->get('folders')->cache, + null, + [ + 'urls' => $c->get('urls'), + 'assets' => $c->get('assets') + ] + ); + } +]; \ No newline at end of file