Giter Site home page Giter Site logo

mooxphp / moox Goto Github PK

View Code? Open in Web Editor NEW
28.0 28.0 4.0 104.32 MB

The Moox Project - Packages for Filament and Laravel

Home Page: https://moox.org

License: MIT License

HTML 0.07% JavaScript 0.69% PHP 96.70% Blade 2.13% Shell 0.03% CSS 0.35% Batchfile 0.02%
admin-dashboard alpine-js alpinejs blade-components cms laravel laravel-livewire livewire-components tailwindcss tall-stack

moox's People

Contributors

adrolli avatar allcontributors[bot] avatar azgasim avatar dependabot[bot] avatar fmorlock avatar github-actions[bot] avatar janakeks avatar kim-the-diamond avatar kimspeer avatar laravel-shift avatar mikagrich avatar mooxbot avatar renovate[bot] avatar somzoli avatar weblate avatar wp1111 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

moox's Issues

Commits, Versions and Changelogs

Automate, start first tags, release to Packagist

Readme:
Monorepo - no package
All - all packages
Multi - some packages
or specific packages like...
Builder
Blog
Pages

Translation UI

Weblate makes a lot of problems:

  • 0 File commits
  • Translations from "violators"
  • Not able to lock and block, Open source
  • Complex setup and maintenance

Searching for alternatives:

Refactoring conditional usage of (commercial) packages

Using commercial packages like "Advanced Tables" should not be done by introducing a composer dependency. Instead, these packages should be loaded conditionally using class_exists or trait_exists. This is currently implemented in Moox Core, but comes with a couple of culprits:

  • Stan does not like it
  • Intelephense does not like it
  • Codacy does not like it
  • It will become pretty spaghetti, when multiple packages need to be coupled this way

Refactoring should be done by using one of following techniques:

  • DI container aka Service container
  • Abstraction to service classes

Currently, some features of Advanced Tables are disabled (in AdminPanelProvider of Intranet-project) to prevent user-facing errors:

  • Quick save
  • Preset views manageable
  • View manager search
  • Advanced Filter Builder

Shift or Rector

Add a shifty plan and test for shifting packages. Otherwise, test Rector:

"require-dev": {
    "driftingly/rector-laravel": "^0.???",
    "rector/rector": "^0.???",

Build components

PSR php Extension, currently no tests on Windows

Currently changed:

  matrix:
    os: [ubuntu-latest, windows-latest]

instead of https://github.com/mooxphp/moox/blob/e3f120155349acfae2a1f376d70a932c2a8bf3b2/.github/workflows/pest.yml#L22C1-L23C28

because of laravel/framework#46165 and me being too lazy to split the non-existing tests for Windows.

and this does not play well with windows

  - name: Remove PHP-PSR Extension
    run: |
      sudo apt remove php8.2-psr

Removing PSR ext is also done in codacy, code climate, and phpstan.

Probably resolved with Laravel 11.

Use Weblate

  • Translation for all packages (form-elements from json to php)
  • Remove the screenshots
  • Render components with language switcher
  • Link to the components from Weblate's explanation
  • Fill gaps using libretranslate.com

Users, Auth

  • Sicherheitsfrage(n) oder z. B. Geburtsdatum - auch bei Zurücksetzen Mail
  • Anmeldelink per Mail
  • 3FA
  • Datenschutz - automatische Löschung inaktiver Konten nach XX Tagen, Mail an Kunde zuvor - Grace period (Deaktivierung)
  • See Auth.md and users docs

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.


Warning

Renovate failed to look up the following dependencies: Failed to look up packagist package moox/page.

Files affected: composer.json


Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

composer
composer.json
  • laravel-lang/lang ^15.5
  • laravel/framework ^11.0
  • laravel/tinker ^2.8
  • moox/audit *
  • moox/builder *
  • moox/expiry *
  • moox/jobs *
  • moox/login-link *
  • moox/notifications *
  • moox/page *
  • moox/passkey *
  • moox/press *
  • moox/security *
  • moox/sync *
  • moox/trainings *
  • moox/user *
  • moox/user-device *
  • moox/user-session *
  • wikimedia/composer-merge-plugin ^2.1
  • fakerphp/faker ^1.23.1
  • laravel/pint ^1.0
  • laravel/sail ^1.26
  • mockery/mockery ^1.6.6
  • nunomaduro/collision ^8.0
  • larastan/larastan ^2.6
  • pestphp/pest ^2.0
  • pestphp/pest-plugin-laravel ^2.0
  • pestphp/pest-plugin-livewire ^2.0
  • phpstan/extension-installer ^1.1
  • phpstan/phpstan ^1.10
  • phpstan/phpstan-deprecation-rules ^1.0
  • phpstan/phpstan-phpunit ^1.0
  • phpunit/phpunit ^10.0
  • spatie/laravel-ignition ^2.3
  • spatie/laravel-ray ^1.33
packages/audit/composer.json
  • moox/core *
  • spatie/laravel-activitylog ^4.0
packages/builder/composer.json
  • moox/core *
packages/core/composer.json
  • php ^8.2.0
  • spatie/laravel-package-tools ^1.13.0
  • laravel/framework ^10.0|^11.0
  • filament/filament ^3.2
  • pharaonic/laravel-readable ^1.0.5
  • codeat3/blade-google-material-design-icons ^1.0
packages/expiry/composer.json
  • moox/core *
packages/jobs/composer.json
  • moox/core *
packages/login-link/composer.json
  • moox/core *
packages/notifications/composer.json
  • moox/core *
packages/page/composer.json
  • moox/core *
packages/passkey/composer.json
  • moox/core *
  • web-auth/webauthn-lib ^5.0
packages/press/composer.json
  • moox/core *
packages/security/composer.json
  • moox/core *
packages/sync/composer.json
  • moox/core *
packages/trainings/composer.json
  • moox/core *
packages/user-device/composer.json
  • geoip2/geoip2 ^3.0
  • jenssegers/agent ^2.6
  • moox/core *
packages/user-session/composer.json
  • moox/core *
packages/user/composer.json
  • moox/core *
  • bezhansalleh/filament-shield ^3.0
  • stechstudio/filament-impersonate ^3.5
  • jeffgreco13/filament-breezy ^2.2
  • awcodes/filament-gravatar ^2.0
public/composer.json
  • roots/wordpress ^6.4
  • vlucas/phpdotenv ^5.6
docker-compose
docker-compose.yml
  • mysql/mysql-server 8.0
github-actions
.github/workflows/codacy-coverage.yml
  • actions/checkout v4
  • shivammathur/setup-php v2
  • codacy/codacy-coverage-reporter-action v1
.github/workflows/code-climate.yml
  • actions/checkout v4
  • shivammathur/setup-php v2
  • paambaati/codeclimate-action v8.0.0
.github/workflows/monorepo-split-packages.yml
  • actions/checkout v4
  • symplify/monorepo-split-github-action v2.3.0
.github/workflows/pest.yml
  • actions/checkout v4
  • shivammathur/setup-php v2
.github/workflows/phpstan.yml
  • actions/checkout v4
  • shivammathur/setup-php v2
.github/workflows/pint.yml
  • actions/checkout v4
  • aglipanci/laravel-pint-action 2.4
  • stefanzweifel/git-auto-commit-action v5
.github/workflows/update-changelog.yml
  • actions/checkout v4
  • stefanzweifel/changelog-updater-action v1
  • stefanzweifel/git-auto-commit-action v5
npm
package.json
  • @alpinejs/focus ^3.10.5
  • @tailwindcss/forms ^0.5.2
  • @tailwindcss/typography ^0.5.0
  • alpinejs ^3.0.6
  • autoprefixer ^10.4.7
  • axios ^1.0.0
  • laravel-vite-plugin ^1.0.0
  • lodash ^4.17.19
  • postcss ^8.4.14
  • tailwindcss ^3.1.0
  • vite ^5.0.0

  • Check this box to trigger a request for Renovate to run again on this repository

Smoothen Renovate

Renovate is tooo aggressive picking up the minor patch releases mostly from the composer lock file. Either stop him to read the lock-file (npm too) and test with only the Json-files or find rules to defer the PRs for minor fix versions.

See https://www.mend.io/renovate-free/

Make a nice welcome view

Change the dev apps welcome view to match with TallUI. Create some sub-views to show our components.

Theming, Widgets, Dashboard

Some placements on the dashboard are not as we want, occupying too much space. One possibility would be to remove the extra heading on widgets (but then it must be obvious, what information the widget contains).

Possible thing:

Yes, you can suppress the heading of a Filament widget table by customizing the widget's configuration. Filament allows you to define a custom view for your widget, where you can control the display of various components, including the heading.

Here’s a step-by-step guide on how to suppress the heading of a Filament widget table:

Step 1: Create a Custom View

Create a custom view for your widget. This view will be used to render the table without the heading.

resources/views/filament/widgets/custom-table-widget.blade.php

<div>
    {{-- Remove or customize the heading as needed --}}
    {{-- <h1>{{ $this->getHeading() }}</h1> --}}
    {{ $this->table }}
</div>

Step 2: Configure the Widget to Use the Custom View

In your widget class, override the view method to specify the custom view you created.

app/Filament/Widgets/MyExpiry.php

<?php

namespace App\Filament\Widgets;

use Filament\Tables;
use Filament\Tables\Table;
use Moox\Expiry\Models\Expiry;
use Filament\Tables\Actions\ViewAction;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Actions\DeleteBulkAction;
use Moox\Core\Base\BaseWidget;

class MyExpiry extends BaseWidget
{
    protected static ?string $view = 'filament.widgets.custom-table-widget';

    public function getTable(): Table
    {
        if (method_exists($this, 'getAdvancedTable')) {
            return $this->getAdvancedTable();
        }

        return Table::make()
            ->columns([
                // Add your table columns here
            ])
            ->actions([
                ViewAction::make(),
            ])
            ->bulkActions([
                DeleteBulkAction::make(),
            ]);
    }

    // Other methods from your class can go here
}

Explanation

  1. Custom View: The custom view resources/views/filament/widgets/custom-table-widget.blade.php is created to define how the widget should be rendered. By commenting out or removing the heading line, you can suppress the heading of the table.
  2. Widget Configuration: In the MyExpiry widget class, the $view property is set to the custom view. This tells Filament to use the custom view for rendering the widget.

Optional: Conditional Suppression

If you want to conditionally suppress the heading based on certain conditions, you can add logic to your custom view or your widget class.

For example, in your custom view:

<div>
    @if($this->shouldShowHeading())
        <h1>{{ $this->getHeading() }}</h1>
    @endif
    {{ $this->table }}
</div>

And in your widget class:

public function shouldShowHeading(): bool
{
    // Add your custom logic here
    return false; // or true based on your conditions
}

This approach gives you full control over the rendering of your widget, allowing you to customize it as needed.

Make Builder-packages compatible to Codespaces

As Github Codespaces seems not to support remote.origin.url, we need to make this optional in configure.php.

If remote.origin.url is Null we cannot prefill these values from Git:

  • $usernameGuess
  • $authorUsername
  • $vendorName
  • $vendorSlug
  • $vendorNamespace

Instead, we can probably use own values like "Usetall" ...

Package Builder

Package Builder Todo List:

Features

All

  • ServiceProvider
  • Configs in /config

Iconset

  • Icons

Database (Full, Data, CRUD)

Components

  • Blade
  • Livewire

Views

  • Blade
  • Livewire
  • ViewComposer

Themes

  • Website
  • Admin

Others

  • Controllers - Path /src/controller -
  • Facades
  • Commands in /src/commands
  • InstallCommand
  • Routes
  • Components
  • Assets
  • Translations
  • Traits
  • Docs
  • Middlewares
  • Broadcast
  • Notifications
  • Mails
  • Exceptions in /src/exceptions
  • Jobs
  • API Connections
  • Contracts
  • Sorting
  • Filter
  • Listing

Tests

  • Unit
  • Feature
  • Surface

Actions

  • Test
  • Analyze
  • Stylefix

Handled by Spatie Package Tools

         ->name('your-package-name')
            ->hasConfigFile()
            ->hasViews()
            ->hasViewComponent('spatie', Alert::class)
            ->hasViewComposer('*', MyViewComposer::class)
            ->sharesDataWithAllViews('downloads', 3)
            ->hasTranslations()
            ->hasAssets()
            ->publishesServiceProvider('MyProviderName')
            ->hasRoute('web')
            ->hasMigration('create_package_tables')
            ->hasCommand(YourCoolPackageCommand::class)
            ->hasInstallCommand(function(InstallCommand $command) {
                $command
                    ->publishConfigFile()
                    ->publishMigrations()
                    ->copyAndRegisterServiceProviderInApp()
                    ->askToStarRepoOnGitHub();
            });

These presets should be available:

  • 1. Full Package - all features
  • 2. Components - Blade and Livewire Components
  • 3. Iconset - Blade SVG Icons');
  • 4. Theme - TailwindCSS Config, Views
  • 5. Module - Admin Panel Module
  • 6. Plugin - Website Plugin
  • 7. Crud - Listing with CRUD-features
  • 8. Block - Editor Blocks
  • 9. Dataset - Static datasets

Collision V8

Renovate wants us to update to Collision V8, but that will need to wait for Laravel 11.

Package error with latest filament v3.2.63

Hi,

When trying to install this package (composer require moox/jobs) I get the following error.

./composer.json has been updated
Running composer update moox/jobs
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

Problem 1
- invaders-xx/filament-jsoneditor[3.0, ..., 3.1] require illuminate/contracts ^8.74|^9.0|^10.0 -> found illuminate/contracts[v8.74.0, ..., v8.83.27, v9.0.0, ..., v9.52.16, v10.0.0, ..., v10.48.4] but these were not loaded, likely because it conflicts with another require.
- moox/jobs[0.0.1, ..., 0.0.5, 1.0.0, ..., 1.0.3, 2.0.0, ..., 2.0.9] require invaders-xx/filament-jsoneditor ^3.0 -> satisfiable by invaders-xx/filament-jsoneditor[3.0, 3.1].
- Root composer.json requires moox/jobs * -> satisfiable by moox/jobs[0.0.1, ..., 0.0.5, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 2.0.0, ..., 2.0.9].

You can also try re-running composer require with an explicit version constraint, e.g. "composer require moox/jobs:*" to figure out if any version is installable, or "composer require moox/jobs:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

My composer.json (filament is version 3.2.63 at this moment)
"name": "laravel/laravel",
"type": "project",
"description": "The skeleton application for the Laravel framework.",
"keywords": ["laravel", "framework"],
"license": "MIT",
"require": {
"php": "^8.2",
"filament/filament": "^3.2",
"filament/tables": "^3.2",
"guzzlehttp/guzzle": "^7.8",
"husam-tariq/filament-database-schedule": "dtconnector-dev",
"jschaedl/iban-validation": "^2.4",
"laravel/framework": "^11.0",
"laravel/tinker": "^2.9",
"league/flysystem-sftp-v3": "^3.26",
"monolog/monolog": "^3.5",
"motze92/office365-mail": "^3.1",
"stancl/tenancy": "^3.8",
"thiagoprz/eloquent-composite-key": "^1.0"
},

Thanks & Kr,
Olivier

Iconsets

  • Rebuild icons-package with Workflows, add to builder?
  • Recap, then build all icon packages

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in C:\Users\alfdr\GitHub\tallui\config\tallui.php on line 15 - Problem: custom views cannot be empty. If empty it generates an empty button, what is not perfect at all. Maybe put "example" to env. That will fix the error and get the button working too...

  • CUSTOM_VIEWS = example
  • put that in all example-envs ...
  • change content of example.blade.php and custom.blade.php to guide the dev better ...

Testing

Badges

Custom Feature V2

Custom feature is the ability to add own code to the dev app here in the Monorepo. Currently this means

  • cloning some packages in _custom
  • add to _custom/composer.json

that will make problems when testing, analyzing, using the App. Views, components and whatever ships with this package needs to be wired - route and blade include - and will fail when the package is missing.

Central Monorepo

Single Monorepo moox soll moox_server und moox_press ablösen.

moox_server hat eine dependency zu Spatie Backup Server, nicht FOSS.

Die Dependency muss leider entfernt und die benötigten tables per eigener Migration erzeugt werden, dazu ein paar Spieldaten. Das package könnte zusätzlich mit Moox Monorepo Custom geladen werden.

Moox Devops (früher Server) bekommt ein eigenes Panel unter /devops

Ein paar class exists werden wir wohl benötigen, da Backup-Klassen in UI verwendet werden.

moox_press erfordert ein WordPress, das in public liegt.

Es existiert eine zweite composer.json in public. Wird WordPress nicht installiert, funktioniert das Panel nicht.

Deshalb bekommt auch Moox Press ein eigenes Panel unter /press

Die Errors im Panel können wir mit Migrations abfangen (aufwändig, da keine existieren oder einen Error werfen, der zur Installation von WordPress einlädt. Es existieren bereits commands, um WordPress samt config zu installieren.

Das Default-Panel ist /admin

Unter /moox könnten wir eine Übersicht der drei Panels mit Erklärung und Link zu den Docs machen.

Wenn wir so ziemlich alle Plugins im Monorepo haben, können wir direkt darin mit entsprechenden Daten und Config die Plattformen der heco entwickeln und die Pakete einfach auf die heco Repos verteilen, indem wir:

  • in das Package-Repo pushen (bereits erledigt)

  • eine neue Version des Packages erstellen (sollte per action machbar sein)

  • Sofern notwendig installer oder updater dort ausführen, wohl erstmal manuell

heco Schulungen -> Moox Trainings

Komplett autark in Laravel entwickeln und per Job die Trainings von WordPress holen.

IFAT-Tickets

Zu individuell und mit Mailcoach, wobei wir den ähnlich handhaben könnten, wie Backup Server. Bleibt erstmal in Web.

WP-Plugins

Die WordPress Plugins moox-press und moox-devops werden mit versioniert.

Wiki

Zu individuell, muss in Intranet. Dort auch die WP-Plugins für heco sowie die Jobs für Expiry und Trainings

Vorgehensweise

  • Neubau oder moox als Basis

Issues

Es gäbe dann nur noch wenige Orte, wo Issues und PRs stattfinden:

  • Moox Monorepo - öffentlich
  • heco Intranet
  • heco Web
  • heco Platform

Issues in Moox können dann auch Plattform-bezogen sein.

Show and test l18n

  • Add the language switcher in demo to show and test the localization features.

Housekeeping and documentation

  • Save the icons, dev-components, docs and other stuff
  • Add docs how to debug (prior to opening an issue)
  • Add dev docs from PSD and temp-MDs (next) like
    • Branching
    • Deployment
    • Versioning
    • Custom (V2)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.