GithubHelp home page GithubHelp logo

mluzarow / mangobango Goto Github PK

View Code? Open in Web Editor NEW
13.0 4.0 2.0 2.9 MB

A personal manga server for your manga collection.

License: MIT License

PHP 79.47% CSS 13.71% JavaScript 6.36% Hack 0.46%
web-application manga manga-reader php php7 mariadb reader comics comic-reader self-hosted

mangobango's Introduction

MangaBango

CodeFactor CircleCI

A manga server for manga things.

Also a makes a local front end I guess.

mangobango's People

Contributors

csteinmuller avatar mluzarow avatar viceadmiral avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

mangobango's Issues

Database pages rendering incorrectly

DBViewer pages are rendering via the old method (echoing immediately at the page controller) and should be updated to use the meta page.

You can see this in action with the displayLibrary view.

Lazy Loading - Add lazy loader script

Add a lazy loader script that will process the images once the initial page is loaded.

This should go into the head of the meta page as it will be used on every page.

Should be looking for img tags that have a certain attribute, "original-src", collect all the source image paths (this is buildable from DB information) and hold on to them until a page specific script tells it when to request images and how many it should request.

Pages such as displayLibrary will most likely need to load in a typical scroll into view style load. Readers should probably load 5 images ahead of the current reader position.

AS AN ALTERNATIVE, could simply call for some bundle of images at a time, regardless of page. Network usage and server processing don't really matter so much as this would be for private use...

Create user database tables

Create a new table in the DB users which stores username, password, and a user type column. All 3 should be varchar 255. Also include primary key user id.

Create new table user_types which stores user id, and access which is an array of flags (0/1). access should be varchar.

Create URI resolver class

Create a class that used the given URI to point the the correct page manager class so as the load the correct data,

Create a view for a login page

Create a view "LoginView" which is a page outside meta page. I will contain nothing but the MangoBango logo on the top bar and a centered login form. Login for will container fields "username" and "password" and a login button.

Metadata Matching - Add metadata sources config

Add a config for setting up the order of important for metadata sources. Should allow user to resort the order in which certain plugins are used to populate data OR disabled certain plugins.

This should go into the config page view as a new section called "Metadata Settings".

Should use new config name metadata_plugins.

Clean up database

Describe the bug
The current database organization for the manga content is has columns that are poorly set up.

Expected behavior
Clean up to not have extra information in each table that does not belong there (E.G. the manga ID of each chapter which only needs a volume ID)

Metadata Matching - Create metadata edit controller

Create a controller that will use the popup editor view and populate the existing fields with data from the database. Should also contain a method that will handle AJAX request from the save button of the editor form and save data to the database.

Lazy Loading - Add lazy loader php controller

Create a controller "LazyLoader" in Core which will be the item called via AJAX from the lazy loader JS.

Should pass back the lazy js a list of base 64 encoded images for each path given.

Library page loading memory issue.

When loading on library pages with images (usually Reader controller pages or DisplayLibrary) sometimes page will stop loading and the connection will be reset, or alternatively will display an out of memory error.

Likely fix will be an implementation of lazy image loading via AJAX .

This is a reference item and will be completed once the project attached to it is completed.

Lazy Loading - Add placeholder images

Add placeholders images for all the cover / spine images as well as a loading gif to indicate that they are in the process of loading. Also include ones for the reader.

It would probably be better if the covers all had a bordered, slightly darker image as a placeholder while the reader just had a plain white image.

Updated meta page to start blank

Updated the meta page to having the standard html and header content added to it and not force as a part of the render method. This will allow this class to be usable for every view.

First time setup doesn't setup configs

The first time setup utility does not set up the required default configs, causing the config page to error out. This makes changing the configs impossible from the user side.

Should have a default config setup added to the setup page while creating tables or (probably better idea) ask the user for config values, populating the current items with some default values.

Add login controller

Add a login page controller and a script that will route you to said controller if you are not correctly logged in.

Series view volume images jumping

Describe the bug
On the series view, the images seem to "jump" as they are loaded in.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '/displaySeries?s=3'
  2. Wait for images to load in.
  3. You can see the image backdrops drop out of line as the loading animation disappears and as the image is loading in, and jump back in line once the image is fully loaded.

Expected behavior
Image backdrop should remain in the same place before, during, and after image load.

Desktop (please complete the following information):

  • Browser All

Smartphone (please complete the following information):

  • Device: All
  • Browser All

Additional context
N/A

Rebuild import system to be more loose

Might be a good idea for the future in order to restructure how the import system accepts files. Currently there was be a very rigid structure of [series name]/[volume number][chapter number][page]. Given that many download softwares AND scanlation releases in general go by chapter, its probably a good idea to accept a structure like [series name][chapter num][page].

Item detection in general should be upgraded. This will likely work in tandem with the metadata project as pulling volume and image data will help us decide where each chapter will go in a volume in order to build out the multitude of views the mango can provide.

Add password validation to session manager

Add AJAX method for processing login value and initializing the session. This also includes updating the JS on the login screen so that it trades the data correctly.

Chapter list

Needs to list every chapter on the main page of each manga for easy adding to MangaStorm iOS app

Needs a manga look-up function

Add an "add new manga" button. Function looks out to a web database of manga and finds the query, includes the synopsis, total chapters, etc. Then adds to the local manga db

First time setup reroute to login

Users that are not logged in (aka new users) who try to use the first time setup page will be rerouted to the login page. This makes it impossible to use the system as the only way they can create the first login is by accessing the first time setup.

Should be able to edit the index to add an exception for this page and its ajax requests. Might also be a good idea to lock access to this page once there is at least one user in the users table.

Metadata Matching - Add metadata source override

Add a setting to the config page that allows the user to enable the usage of a user-sourced XML or JSON file that contains manga metadata. This config should use the file as a plugin option, weight ordered by the metadata_plugins config. Config should hold the path to the metadata file.

Config should be treated as enabled if it exists in the megadata_plugins list. This addition / removal from this list should be automatic.

Config should be called metadata_user_file.

Allow for metadata user editing

Add the ability to manually edit metadata on each series page.

Should be either a JS based popup which populates via AJAX using some view class or alternatively a separate page controller. Should be activated by hovering over a series icon and selecting an edit icon, preferably in the lower right as a pencil icon.

Metadata Matching - Create view for metadata / series editing

Create a view that will be called via AJAX when a user clicks the edit button for a series.

View should be a form WITH an update button "Save Changes" displayed prominently at the top of the popup. Should contain inputs for all metadata returned from Jikan (subject to change depending on how useful it is).

Add a favicon.

Site is currently missing a favicon. One should be added.

Series view responsiveness

Describe the bug
The series view is styled in a way that does not work very well for lower widths. Styling should be updated so that it looks good on mobile.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '/displaySeries?s=2'
  2. Resize below 900px.
  3. Everything below and around this breakpoint looks bad.

Expected behavior
Site sections should move around and resize in order not to be so squeezed. The cover images should probably have some scaling queries like they do in the library view. The chapter list should probably become bigger around 900 and move under the metadata section around 500. Typical responsive look, I dunno.

Desktop (please complete the following information):

  • Browser All

Smartphone (please complete the following information):

  • Device: All
  • Browser All

Additional context
N/A

Edit meta page to show login

Edit the meta page's top bar to have an item at the far left. Should display small text reading either "Logged in as username. Do not worry about no active login as the metapage is not used when there is not used when not logged in.

Should have tiny dropdown arrow pointing down to the right of the username. Should show a menu with 1 item "Log out".

Lazy loading timeouts

Describe the bug
There are so many lazy loading AJAX requests that they are actually being blocked.

To Reproduce
Steps to reproduce the behavior:

  1. Visit ~/reader?s=4&v=1&c=1
  2. You can see that certain images will just never load or others will stall on the request.

Expected behavior
Images should be lazy loaded as the user scrolls them into view or slightly before. In the case of the strip view, perhaps load in batches of 4 images, triggering a load of the next 4 images once the user gets to the 1 before an unloaded image.

Screenshots
N / A

Desktop (please complete the following information):
All

Smartphone (please complete the following information):
All

Metadata Matching - Implement lookup classes

Implement the new metadata lookup classes into the AJAX library scan of the config page controller.

Should use Jikan as the primary data source and then search for more information if any items are missing from other sources.

Metadata Matching - Implement MCD (Manga Cover Database) requests

This connector currently exists but is missing certain methods. This API is rather small so I shouldn't be too much work.

MCD docs: link

NOTE: The MCD POST for covers by series title currently does not work and always returns a 400 error. Emailed the developer to see what they say.

Library scan skips non-numeric items

Currently the library scanning system will look for the first available numeric string in the file/folder name. Those, it totally skips non-numeric items.

Should be updated to add in these items, in alphabetical order, after all the numeric items. (I guess until there is solid metadata from which the chapter order can be drawn)

Lazy Loading - Update curent views to display placeholders

Update all the live view classes to display placeholder images instead of loaded base 64 encoded images.

These will be placed in an img take with the src being a placeholder image while an attribute "original-src" is added with the value being the path to the image that is to be loaded.

Database server configurable

The configs for the database are hard coded in the database controller. This should be moved out into some ini or otherwise be made easily configurable.

Create a session controller.

Create the skeleton for a session controller"SessionManager", which will manager logging in/out, adding stuff to favorites, and other user-specific data. This should be in Core.

Metadata Matching - Add database tables

Add in the appropriate database tables for storing metadata. Existing tables may have to be edited as well to make more sense.

Currently the table manga_metadata exists with the folder path name an an unused "original title" column. This could probably be expanded to store all text metadata.

POSSIBLY save metadata from multiple sources in source-specific tables so that the user can choose which they want to use? Or maybe that just wastes space.

Favorites tab

create the ability to save certain series as favorites and then view them on a separate tab.

User Editor - Add user configs to configs

Add a new section to the configs page that shows up only if the user is of type 'admin'. This section should show a list of users AND user types, with the ability to edit usernames and user types.

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.