jacked's People
jacked's Issues
New Admin Users Lose Names
Creating a new user through the admin module, always Last and sometimes First Names don't even make it to the database.
imguploader is broken
500 error on non-croppic upload to imgupload-handler, undefined variable
Re-Cropping social thumbnail results in smaller output
On a post with an existing thumbnail, clicking the re-crop button and then saving a new crop results in a 50% smaller version of the new crop with black fill. The @2x trickery is failing after a re-crop of the original.
Re-cropped image shows old cropped version
The filename doesn't change when we re-crop, so it shows the previous version in the img tag. We need to force it to update.
PayPal Done Fucked Up
PayPal integration is straight up broken thanks to a change in their REST APIs, and the SDK has also changed its API. So basically the whole thing needs to be rewritten with the new lib.
Create session memory limits for Yapp API session data
Don't allow clients to write an absurd amount of data to the session, so they can't hog all the memory on the server via the API. This limit should be either configurable or intelligent, or some combination.
Export CSV for Shipping
Add a big magic button that exports Sale data as a CSV in a configurable format for things like UPS shipping. We can use a DatasBeard Table as a mapping of Sale data fields -> CSV column names.
Criteria Array doesn't work past one level deep
Even the example does't work. Everything past one level loses table names and doesn't apply logical operators unless explicitly specified.
WHERE criteria with relational fields using anything other than key = value syntax results in malformed queries
Trying to use something like
'User.first_name LIKE ?' => '*something*'
Syrup will try to replace the relational field with something like
User.guid = Blah.guid AND User.first_name LIKE *something* = *something*
It shouldn't edit the key and let the normal parsing run through it.
Add support for optional dimensions field on Sales
Every Sale needs to have an optional field for any 'extra' values related to it that are not defined explicitly by the Product, such as size or color. For now they don't need to be anything dynamic or special, just a simple json object to represent the fields.
Later, we can have dynamic dimensions including strict type checking and validation for every Product.
But not yet.
Paging/Date limiting Sales
The Sales list in Purveyor's manager is a monolithic list of everything from the database. The bigger it gets, the slower it gets both in terms of the query putting load on MySQL and the browser being slow to render all those rows and their detail views.
We need some kind of simple paging or better yet a date picker to select date ranges
Changing table schema doesnt have checks for existing data
If you change the schema for any table with existing data, it will just shove the new schema in without any regard for the existing rows. It needs to:
- check that the existing rows are all valid within the new schema
- add/delete fields from existing rows as needed (probably should prompt the user about this)
JACKED->loadLibrary is fucking stupid
Why does this even exist.
Admin Tools for Data's Beard
Without an admin interface, this whole module is pretty useless, huh?
Type hinting on Beard methods that take content params
For example: createRow takes $content as an array but just converts it to json anyway. We might as well check the type first so we can also accept strings that are already json.
Allow Percentage Promotion Values and Full Order Application
Promotions should allow for either fixed numeric or percentage values, as well as whether to apply to the full order or a single product, independently of each other. This allows us to create things like 20% off the full order including shipping, free shipping, etc.
Investigate adding fixed discount line items to PayPal API call. If this is impossible, we'll need a workaround for adding to existing line items, or not allow the combination of full order application + fixed value.
Search Sales
Finding a sale by anything other than email is incredibly difficult. We need a search/filter field.
Admin login loses querystring
When a direct URL to somewhere past auth redirects to the login page, we completely ignore the original URL and go to the home page on successful login.
Login form should include a hidden field for optional post-login redirect
Memcache needs to invalidate on update
With the timeout set to 10 seconds by default on most entries in MySQL's use of memcached, if within a single script, an UPDATE/REPLACE and then a SELECT are called using the same rows in the db, the SELECT will return data from memcached, which will now be outdated after the UPDATE/REPLACE. The easy fix is to invalidate cached rows (memcacher->delete()) after a successful UPDATE/REPLACE, but with the existing md5 hashing for queries, there's no way to easily determine which rows to invalidate. Hashing needs to be done more intelligently, and then invalidations can be added.
DatasBeard Delete Row Doesn't Work
No error messages, just doesn't do anything.
EpicEditor theme wnv.css missing
Why is this even in the main repo?
Re-Cropped images have extra _cropped.png appended
After editing a post and choosing to re-crop an existing thumbnail and saving it, the new filename has an extra "_cropped.png" resulting in something like http://staging.warrantynowvoid.com/assets/img/lol/30634c9752c340ada702c7322be9801d_cropped.png_cropped.png
I can only assume this would go on forever for crops on crops on crops. It works, so this is only an annoyance.
Support table.field definitions in find
Rather than just specifying "SomerelationName" => "some-lengthy-guid" and relying on auto-generated target/guid notations, allow for specifying tables and fields as the keys with dot notation: "Category.name" => "butts"
SyrupModel->save() Sucks at relations
hasOne relations, just simple guid joins, don't seem to be updated properly, and hasMany relations, it doesn't even try to handle.
It does actually do a really good job traversing all the relational objects in both cases, but it doesn't actually update the relations themselves. So you can change the User object's name in the database, but you can't change the User that this object is pointing to. Also the hasMany arrays just straight up blow my mind on a daily basis, so I can't really begin to explain the fix for that. Use the relationTable static property of the relation model? Oh god
JSON Validator Library Changed
Current version of the JSON Validator library in JACKED/lib/php-json-schema/Json/Validator.php has changes to __construct to switch from taking a path and loading a json file as a schema to just taking a string that is the schema itself. This is altered from the actual repo until either hasbridge/php-json-schema#15 is resolved or this is replaced with an actual fork.
Admin modules are hard coded to support other modules
Ex: Blag is specifically hardcoded with Curator support on posts. Modules should be able to define widgets or something that can be loaded on demand.
Better Reporting
As requested in steempb/steempb.com#34, add some reporting on Sales and things and sorting/filtering/paging of the Sales list.
Inline Row Edits Lose Data
Repro on MobileSafari:
Go to Manage Promotions in Purveyor
Click edit button in existing Promotion row
Change values, click save button
A different row will have lost its name (now "") and value (now 0), while the intended row is unchanged.
Support dynamic creation of Syrup models
Right now, the only way to register a model instance with Syrup is to just start using it and trigger lazy loading, which looks for the model's class file on the filesystem and instantiates it. Syrup needs to be able to also support programmatically creating a model instance and requesting that it be registered. This will most commonly follow a pattern like creating a new instance of BaseModel, then setting its magic members and field instances, then attaching it to Syrup with some special name that doesn't necessarily match a module.
Relational keys as criteria names have breaking parens
Doing something like this:
$posts = $JACKED->Syrup->Blag->find(
array('AND' => array('Curator.canonicalName' => $tagName, 'alive' => 1))
);
results in a bit of SQL that looks like this:
WHERE ( ( CuratorRelation.target = Blag.guid AND Curator.guid = CuratorRelation.Curator AND Curator.canonicalName ) = '-sciencefiction' AND Blag.alive = '1' )
The parens around the relational join are causing trouble, like hanging up mysqld on trying to cache the insane result of infinite rows.
Wildcard replacing in keys doesn't work with quotes
Using wildcards in the value like
'guid LIKE ?' => '*bleh*'
is fine, but
'guid LIKE *?*' => 'bleh'
will result in
guid LIKE %'bleh'%
with quotes inside the wildcards around the value.
imguploader doesn't gracefully handle max filesize limits or filetype checks
Also applies to croppic
Import tracking numbers to Purveyor for Sales
Rather than copy pasting each individual Sale tracking number into the modal, we should allow import of a csv or xls with Sale uuids -> tracking numbers.
Remove Moolah Code
It's dead and it's never coming back. Switching to Stripe from PayPal would also allow accepting bitcoin in the future.
Standardize guid/uuid usage
Right now we use "guid" and "uuid" pretty interchangeably in a few places throughout the code, which is technically inaccurate. We should clean up the implementation to be consistent, and improve things like storing them in the database. (We currently use VARCHAR which is unnecessarily large, when CHAR(36) would be fine, or ideally BINARY(16).)
New Module: Data's Beard
This module will be for a simplistic, admin-manageable, persistent data store. The goal is to enable users to create and edit what amount to tables of data without having to edit any code or add models to Syrup, and also to allow for site-implementation-specific data stores that can be used in templates and things but also be editable through Admin without requiring forking JACKED itself.
Flock can't make up its mind which field to use as Unique key
username or email? In some places it even refers to email as 'username'. It needs to be a configurable option which to use for things like login and getUser
Show failed confirmations
For Moolah, transactions that haven't been confirmed within 30 minutes are cancelled, and PayPal probably has a similar time limit. We should show that on the Sales manage page instead of being forever pending.
Edit Loses Unchanged Thumbnails
Opening a post with an existing thumbnail for edit, then saving without changing the thumb saves NULL to the post's thumbnail field.
Better drafts
We're using localstorage to autosave save a draft periodically, but it only uses the actual content block as part of epicEditor. Why not just make it a json object for every field in the form?
Also, let's just pretend https://github.com/pettazz/JACKED/blob/master/JACKED/admin/Blag/edit.php#L71 never happened.
Support Syrup models at the app level
Currently Syrup will only try to load a model from its own core directory inside JACKED_MODULES_ROOT, which means if any app wants to create their own models they have to either fork JACKED or keep their model files untracked from git, which sucks.
Syrup should allow for a user configurable Models search path outside of the core stuff, like the way $PATH works, with core as the first search locations then conf-defined added after.
$0 Shipping Error
In createSale, if $shipping == 0, we don't construct the $details object and run into a "Undefined variable: details" error later on. Instead ignoring $details on a falsey value, we should default it to $0.
Support Twitter Cards
Apparently twitter is too good for og meta tags and has their own format:
https://dev.twitter.com/cards/overview
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.