Skip to content

Commit

Permalink
update roadmap and minor fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
RobinDev committed Apr 12, 2021
1 parent 1b2ecfe commit 1c77d0f
Show file tree
Hide file tree
Showing 24 changed files with 410 additions and 413 deletions.
2 changes: 1 addition & 1 deletion docs/configuration.html
Expand Up @@ -18,7 +18,7 @@
# Dir where files will be uploaded when using admin.
media_dir: '%kernel.project_dir%/media'
# Used to generate browser path. Must be accessible from public_dir.
public_media_dir: /media
public_media_dir: media
database_url: 'sqlite:///%kernel.project_dir%/var/app.db'
entity_page: App\Entity\Page
entity_media: App\Entity\Media
Expand Down
2 changes: 1 addition & 1 deletion docs/roadmap.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/search.json

Large diffs are not rendered by default.

Expand Up @@ -29,7 +29,7 @@ public function __construct(EntityManagerInterface $em)
$this->em = $em;
}

public function manage(Request $request, ImageManager $imageManager): Response
public function manage(Request $request, ImageManager $imageManager, string $publicMediaDir): Response
{
/** @var File $mediaFile */
$mediaFile = $request->getContent() ? $this->getMediaFrom($request->getContent())
Expand All @@ -48,7 +48,7 @@ public function manage(Request $request, ImageManager $imageManager): Response
$this->em->flush();
}

$url = false === strpos($media->getMimeType(), 'image/') ? '/download/'.$media->getMedia()
$url = ! $imageManager->isImage($media) ? '/'.$publicMediaDir.'/'.$media->getMedia()
: $imageManager->getBrowserPath($media->getMedia());

return new Response(json_encode([
Expand Down
13 changes: 12 additions & 1 deletion packages/admin-block-editor/src/FormField/PageImageFormField.php
Expand Up @@ -9,7 +9,18 @@ class PageImageFormField extends AbstractField
{
public function formField(FormMapper $formMapper): FormMapper
{
return $formMapper->add('inline_image', \Sonata\AdminBundle\Form\Type\ModelListType::class, [
$formMapper->add('inline_image', \Sonata\AdminBundle\Form\Type\ModelListType::class, [
'required' => false,
'class' => $this->admin->getMediaClass(),
//'label' => 'admin.page.mainImage.label',
'btn_edit' => false,
'mapped' => false,
'row_attr' => ['style' => 'display:none'],
], [
'admin_code' => 'pushword.admin.media',
]);

return $formMapper->add('inline_attaches', \Sonata\AdminBundle\Form\Type\ModelListType::class, [
'required' => false,
'class' => $this->admin->getMediaClass(),
//'label' => 'admin.page.mainImage.label',
Expand Down

Large diffs are not rendered by default.

19 changes: 14 additions & 5 deletions packages/admin-block-editor/src/assets/editorJsHelper.js
Expand Up @@ -3,17 +3,18 @@ import ajax from "@codexteam/ajax";
export class editorJsHelper {
constructor() {}

static abstractOn(Tool, event, action = "select") {
static abstractOn(Tool, event, action = "select", inlineImageFieldSelector = '[id*="inline_image"]') {
//
const buttonClicked = event.target;
const originalTextContent = buttonClicked.textContent;
//buttonClicked.textContent = ". . . ";

const inlineImageField = document.querySelector(
'div[id*="inline_image"] ' + (action === "select" ? "a" : "a:nth-child(2)")
"div" + inlineImageFieldSelector + " " + (action === "select" ? "a" : "a:nth-child(2)")
);
inlineImageField.click();

document.querySelector("input[id*=inline_image]").onchange = function () {
document.querySelector("input" + inlineImageFieldSelector).onchange = function () {
var id = jQuery(this).val();
var upload = ajax
.post({
Expand All @@ -34,14 +35,22 @@ export class editorJsHelper {
};
}

onSelectFile(Tool, event) {
onSelectImage(Tool, event) {
editorJsHelper.abstractOn(Tool, event, "select");
}

onUploadFile(Tool, event) {
onSelectFile(Tool, event) {
editorJsHelper.abstractOn(Tool, event, "select", '[id*="inline_attaches"]');
}

onUploadImage(Tool, event) {
editorJsHelper.abstractOn(Tool, event, "upload");
}

onUploadFile(Tool, event) {
editorJsHelper.abstractOn(Tool, event, "upload", '[id*="inline_attaches"]');
}

toggleEditorJs(editorId) {
var editorJsInput = document.querySelector("input[data-editorjs]");
var textareaInput = document.querySelector("textarea[data-editorjs]");
Expand Down
1 change: 1 addition & 0 deletions packages/admin-block-editor/src/config/services.yaml
Expand Up @@ -6,6 +6,7 @@ services:
$editorBlockForNewPage: "%pw.pushword_admin_block_editor.new_page%"
$mediaClass: "%pw.entity_media%"
$pageClass: "%pw.entity_page%"
$publicMediaDir: "%pw.public_media_dir%"

Pushword\AdminBlockEditor\:
resource: "../*"
Expand Down
Expand Up @@ -3,7 +3,7 @@
<div class="w-16 px-3 text-gray-400">
{{ svg('file-alt', {class: 'w-8 pt-2 fill-current'}) }}
</div>
<div class="flex-grow">
<div class="flex-grow pt-3">
<div class="font-bold">{{ data.title }}</div>
<div class="font-light">{{ filesize(data.file.size) }}{{ 'bytes_abbreviation'|trans }}</div>
</div>
Expand Down
Expand Up @@ -47,8 +47,8 @@ var editorjsConfig = {
byFile: "/admin/media/block",
byUrl: "/admin/media/block",
},
onSelectFile: editorJsHelper.onSelectFile,
onUploadFile: editorJsHelper.onUploadFile,
onSelectFile: editorJsHelper.onSelectImage,
onUploadFile: editorJsHelper.onUploadImage,
}
},
gallery: {
Expand All @@ -59,16 +59,16 @@ var editorjsConfig = {
byFile: "/admin/media/block",
byUrl: "/admin/media/block",
},
onSelectFile: editorJsHelper.onSelectFile,
onUploadFile: editorJsHelper.onUploadFile,
onSelectFile: editorJsHelper.onSelectImage,
onUploadFile: editorJsHelper.onUploadImage,
}
},
embed: {
name: "embed",
className: "Embed",
config: {
onSelectFile: editorJsHelper.onSelectFile,
onUploadFile: editorJsHelper.onUploadFile,
onSelectFile: editorJsHelper.onSelectImage,
onUploadFile: editorJsHelper.onUploadImage,
},
},
raw: {
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/DependencyInjection/Configuration.php
Expand Up @@ -39,7 +39,7 @@ final class Configuration implements ConfigurationInterface

const DEFAULT_CUSTOM_PROPERTIES = [];

const DEFAULT_PUBLIC_MEDIA_DIR = '/media';
const DEFAULT_PUBLIC_MEDIA_DIR = 'media';
const IMAGE_FILTERS_SET = [
'default' => ['quality' => 90, 'filters' => ['downscale' => [1980, 1280]]],
'height_300' => [
Expand Down
37 changes: 20 additions & 17 deletions packages/core/src/Resources/assets/page.js
@@ -1,29 +1,32 @@
//import 'alpinejs';

require('fslightbox');
require("fslightbox");

import {
uncloakLinks,
readableEmail,
convertImageLinkToWebPLink,
replaceOn,
liveBlock,
} from '@pushword/js-helper/src/helpers.js';
uncloakLinks,
readableEmail,
convertImageLinkToWebPLink,
replaceOn,
liveBlock,
} from "@pushword/js-helper/src/helpers.js";

import { allClickable } from "@pushword/js-helper/src/clickable.js";

function onPageLoaded() {
onDomChanged();
new FsLightbox();
onDomChanged();
new FsLightbox();
}

function onDomChanged() {
liveBlock();
convertImageLinkToWebPLink();
uncloakLinks();
readableEmail('.cea');
replaceOn();
refreshFsLightbox();
liveBlock();
convertImageLinkToWebPLink();
uncloakLinks();
readableEmail(".cea");
replaceOn();
refreshFsLightbox();
allClickable(".clickable");
}

document.addEventListener('DOMContentLoaded', onPageLoaded());
document.addEventListener("DOMContentLoaded", onPageLoaded());

document.addEventListener('DOMChanged', onDomChanged);
document.addEventListener("DOMChanged", onDomChanged);
2 changes: 1 addition & 1 deletion packages/core/src/Resources/public/page.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/core/src/Resources/public/tailwind.min.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/docs/content/configuration.md
Expand Up @@ -74,7 +74,7 @@ pushword:
# Dir where files will be uploaded when using admin.
media_dir: '%kernel.project_dir%/media'
# Used to generate browser path. Must be accessible from public_dir.
public_media_dir: /media
public_media_dir: media
database_url: 'sqlite:///%kernel.project_dir%/var/app.db'
entity_page: App\Entity\Page
entity_media: App\Entity\Media
Expand Down
62 changes: 35 additions & 27 deletions packages/docs/content/roadmap.md
Expand Up @@ -5,53 +5,61 @@ toc: true
parent: contribute
---

## Soon
## To finish

- **Core** : use autowire and autoconfigure per default and remove useless lines
- **Admin Block Editor Tools** : prepare translating and transalte
- implement **SonataUserBlundle** (see user_block.html.twig), wait for https://github.com/sonata-project/SonataUserBundle/pull/1256
- manage date i18n a better way than randomly (document the process)
- Admin Block Editor Tools : can't delete PagesList Block => https://github.com/codex-team/editor.js/issues/1640
- Restore Admin: Page Tree https://github.com/sonata-project/SonataAdminBundle/issues/7035
- test fresh install
- **Admin Block Editor** : sanitize with https://github.com/editor-js/editorjs-php (see AdminFormEventSuscriber.php)
- **Block editor** : édition avancée (template notamment dans pages, prose/unprise)
- **Core** : ImageManger - make optimizer bin path configurable
- **Core** on login success, redirect to previous route (see UserAuthenticator)
- **Core** : use autowire and autoconfigure per default and remove useless lines
- Simplify request to external service with one pipe (toward Guzzle)
- **pagination** : tester & documenter
- **Block editor** : édition avancée (template notamment dans pages, prose/unprise)

## BugFix

- **Admin Block Editor Tools** : can't delete PagesList Block => https://github.com/codex-team/editor.js/issues/1640
- **Admin** : Restore Admin: Page Tree https://github.com/sonata-project/SonataAdminBundle/issues/7035
- **Prose/Unprose** : Avoid empty prose div : (see two block unprose one after the other)
- **clickable**
- associé un champ vidéo à l'image d'en-tête (plugin !)
- **Page Scanner** : add <!-- page-scanner-ignore: what to ignore --> ou plutôt dans othersParameters
- API ?!
- **Page Scanner** check redirection
- **Page Scanner** Check there is no translation with the same language than current page
- **eCommerce** bridge with sylius

## Feature

- **Multi-upload** (see https://packagist.org/packages/silasjoisten/sonata-multiupload-bundle)
- Intégrer **LinksImprover** (+ UX)
- **Page-Scanner** :
- scanner une page en direct + scanner plus de choses
- texte alternatif manquant
- Check there is no translation with the same language than current page
- add <!-- page-scanner-ignore: what to ignore --> ou plutôt dans othersParameters
- **name suggester**: parse content, find words or multiple words used only in this doc, suggest it as potential name, s'active au moment du clic sur l'input name
- **eCommerce** bridge with sylius ?!
- **Advanced main image** : associé un champ vidéo à l'image d'en-tête
- **Admin** : extend parameters and events to _filters_ and _lister_ will permit extension)
- **Static**: copy only used media in public
- **FacebookManager** : post from facebook
- **Flat**: Transform markdown link to page link (useful for navigate in docs from editor)
- **Flat**: Throw error when the content is more up to date in database
- Intégrer **LinksImprover** (+ UX), après précédent
- **name suggester**: parse content, find words or multiple words used only in this doc, suggest it as potential name, s'active au moment du clic sur l'input name
- **Flat**:
- Transform markdown link to page link (useful for navigate in docs from editor)
- Throw error when the content is more up to date in database

## Others

- **Core** : implement **SonataUserBlundle** (see user_block.html.twig), wait for https://github.com/sonata-project/SonataUserBundle/pull/1256
- manage date i18n a better way than randomly (document the process)
- Simplify request to external service with one pipe (toward Guzzle and 1 configuration for all extension)
- API ?!
- **Complex Right System** : Multi-user editor Multi-site but not everybody can edit everything (see draft.md) (extension or core ?)
- **Page-Scanner** : scanner une page en direct + scanner plus de choses (texte alternatif manquant, etc.)
- **Multi-upload** (see https://packagist.org/packages/silasjoisten/sonata-multiupload-bundle)
- **Admin Block Editor** : sanitize with https://github.com/editor-js/editorjs-php (see AdminFormEventSuscriber.php)
- **Core** : Rewrite filter componenent to use the power of symfony service

## One day (maybe)

- Auto-update npm package (js-helper and editorjs-tool) via Github Actions
- Stop using Repo and start autowiring thé good repo (used multiple repo)
- Fluidifier le process de test et deploiement (tester avec les vrais données)
- **Best testing** Fluidifier le process de test et deploiement (tester avec les vrais données)
- Move global app_base_url, name and color to à better spot (like évent suscriber)
- Move weird entity trait constructor to lificycle callback
- Move notify to messenger bus ? : https://symfony.com/doc/current/the-fast-track/fr/18-async.html

* **Pagination** : move to extension and drop pagerfanta
* **Admin** : Automatic save without flooding version
* **Version** : Rewrite to load in an entity versionned version and used sonata filters
* Add https://github.com/nan-guo/Sonata-Menu-Bundle
* **Admin** (and admin extensions): Manage SonataAdminMenuOrder a better way than randomly
* **Wordpress** to Pushword/Core (and vice versa)
* **Flat** (spatie/yaml-front-matter, vérif à chaque requête pour une sync constante admin <-> flat files)
* Create a page from a Media (media edit) => button to create a new page with title = name and mainImage = Media
Expand Down
2 changes: 1 addition & 1 deletion packages/js-helper/package.json
@@ -1,6 +1,6 @@
{
"name": "@pushword/js-helper",
"version": "0.0.45",
"version": "0.0.46",
"description": "Pushword front end helpers. ",
"author": "Robin@PiedWeb <contact@piedweb.com>",
"license": "MIT",
Expand Down

0 comments on commit 1c77d0f

Please sign in to comment.