Giter Site home page Giter Site logo

grasshopper-admin's Introduction

grasshopper-admin's People

Contributors

altmind avatar duder-onomy avatar kaijarayne avatar lukechinworth avatar pajtai avatar thinksolid avatar travism avatar wildvalcom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

grasshopper-admin's Issues

Create a db powered config page

The config page should be at .../admin/config
The api for the page should be something like .../admin/_config
Configs should be in a separate ghAdmin collection with _id config

exec error: Error: Command failed: env: node\r: No such file or directory

seems like an intermitent bug that goes away and comes back - internal tracking at:

https://solidinteractive.atlassian.net/browse/GRAS-1418

Think the fact that it comes back and goes away, points to it being a OS issue... something similar is here: busterjs/buster#401 (comment)

probably if @altmind builds, it has windows line endings, if someone else builds it has linux line endings

I'll reopen 1418, reference this, and we can come up w a solution.

similar issues

Saving content with an empty array drops data when saving to database

Saving content that has a content-type containing "Allow Multiple" with no value does not save the empty array back to the database.

Example:

    {
        "hidden" : true,
        "producers" : [ ],
        "releaseyear" : "2013",
        "writers" : [ ]
    }

After saving both producers and writers are not in the data.

Relative link saved for File Reference

Since in pretty much all projects we are referencing an S3 bucket, it would be nice to have this done automatically. In every project I've seen there is some middleware that adds the S3 bucket reference to the file refs. Automatic would save a lot of dev time

Add conditional fields

Have to figure out how exactly this would work, but thinking it would be a conditional field type. In it you would pick an existing type and add a condition.

Only first save after loading content view works on embedded type fields

Reproduced on several implementations of admin, so it must be a lib bug.

  • Open a piece of content and update several fields; try a standard text field and an embedded type field.
  • Save content.
  • Update the fields again and save again.
  • Refresh the page.

Notice the text field is up to date, but the embedded field has the value it had after the first save.

Image upload fails silently

Trying to upload an 8Mb video the upload fails silently

v confusing

OTS parsing error: invalid version tag
jquery.ui.accordion.js:564Uncaught TypeError: Cannot read property 'className' of undefined
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55946:53)
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:53475:25)
at HTMLDivElement.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55889:10)
at HTMLDivElement.opt.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15807:12)
at fire (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12219:30)
at Object.fireWith [as resolveWith] (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12331:7)
at tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15682:14)
at Function.jQuery.fx.tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15972:9)
at raf (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:49635:19)
jquery.ui.accordion.js:564Uncaught TypeError: Cannot read property 'className' of undefined
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55946:53)
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:53475:25)
at HTMLDivElement.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55889:10)
at HTMLDivElement.opt.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15807:12)
at fire (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12219:30)
at Object.fireWith [as resolveWith] (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12331:7)
at tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15682:14)
at Function.jQuery.fx.tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15972:9)
at raf (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:49635:19)
https://nicerink.thinksolid.com/api/user Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://nicerink.thinksolid.com/api/contenttypes Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://nicerink.thinksolid.com/api/token/logout Failed to load resource: the server responded with a status of 502 (Bad Gateway)
/admin/login:1 Mixed Content: The page at 'https://nicerink.thinksolid.com/admin/login' was loaded over HTTPS, but requested an insecure image 'http://www.gravatar.com/avatar/?s=24&d=mm'. This content should also be served over HTTPS.
/admin/items:1 Mixed Content: The page at 'https://nicerink.thinksolid.com/admin/items' was loaded over HTTPS, but requested an insecure image 'http://www.gravatar.com/avatar/a6f53d9acd3a29af6798bd267bfc7fef?s=24&d=mm'. This content should also be served over HTTPS.
jquery.ui.accordion.js:564Uncaught TypeError: Cannot read property 'className' of undefined
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55946:53)
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:53475:25)
at HTMLDivElement.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55889:10)
at HTMLDivElement.opt.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15807:12)
at fire (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12219:30)
at Object.fireWith [as resolveWith] (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12331:7)
at tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15682:14)
at Function.jQuery.fx.tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15972:9)
at raf (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:49635:19)
jquery.ui.accordion.js:564Uncaught TypeError: Cannot read property 'className' of undefined
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55946:53)
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:53475:25)
at HTMLDivElement.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55889:10)
at HTMLDivElement.opt.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15807:12)
at fire (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12219:30)
at Object.fireWith [as resolveWith] (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12331:7)
at tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15682:14)
at Function.jQuery.fx.tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15972:9)
at raf (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:49635:19)
jquery.ui.accordion.js:564Uncaught TypeError: Cannot read property 'className' of undefined
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55946:53)
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:53475:25)
at HTMLDivElement.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55889:10)
at HTMLDivElement.opt.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15807:12)
at fire (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12219:30)
at Object.fireWith [as resolveWith] (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12331:7)
at tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15682:14)
at Function.jQuery.fx.tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15972:9)
at raf (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:49635:19)
jquery.ui.accordion.js:564Uncaught TypeError: Cannot read property 'className' of undefined
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55946:53)
at $.(anonymous function).(anonymous function)._toggleComplete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:53475:25)
at HTMLDivElement.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:55889:10)
at HTMLDivElement.opt.complete (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15807:12)
at fire (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12219:30)
at Object.fireWith [as resolveWith] (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:12331:7)
at tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15682:14)
at Function.jQuery.fx.tick (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:15972:9)
at raf (https://nicerink.thinksolid.com/admin/main.84d46eb6.js:49635:19)
2https://nicerink.thinksolid.com/api/node/585ad281e83d957c04d783ec/assets Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Add ability to add indexes to collections

A page should show:

db.getCollectionNames().forEach(function(collection) {
   indexes = db[collection].getIndexes();
   print("Indexes for " + collection + ":");
   printjson(indexes);
});

and this should be configurable.

Currently only _id is indexed by default. Would be nice to add / list indices from admin.

Rebuild user and users with riot views

  • Create a jade layout - a master page - with includes that only gives access to #stage to preinstalled-plugins/user/index.jade
  • Need to render the view w riot server side rendering
    • Need cookies for this in order for server to know about auth

Save is inconsistent when changing Boolean values

I have an embedded field type with 2 boolean values, I have noticed that the behaviour is inconsistent when trying to toggle these values.

This link shows a video of me changing the value, clicking save and then refreshing the page to see if the value has updated correctly. It didn't in this case, but if I repeat the operation is will most likely work. Very confusing

http://www.screencast.com/t/b6dzQqjgJ

Error connecting to Remote MongoDB

The Grasshopper Admin & API works fine when I configure with Localhost MongoDB, but I configure remote MongoDB I get following error

The User is admin, and has DB Admin Access on all databases

Unhandled rejection MongoError: not authorized on sandbox-db to execute command { listIndexes: "sessions", cursor: {} }
at Function.MongoError.create (/Users/nikhil/grass/node_modules/mongodb-core/lib/error.js:30:11)
at queryCallback (/Users/nikhil/grass/node_modules/mongodb-core/lib/cursor.js:213:36)
at /Users/nikhil/grass/node_modules/mongodb-core/lib/connection/pool.js:456:18
at nextTickCallbackWith0Args (node.js:433:9)
at process._tickCallback (node.js:362:13)

Error connecting to Remote MongoDB

The Grasshopper Admin & API works fine when I configure with Localhost MongoDB, but I configure remote MongoDB I get following error

The User is admin, and has DB Admin Access on all databases

Unhandled rejection MongoError: not authorized on sandbox-db to execute command { listIndexes: "sessions", cursor: {} }
at Function.MongoError.create (/Users/nikhil/grass/node_modules/mongodb-core/lib/error.js:30:11)
at queryCallback (/Users/nikhil/grass/node_modules/mongodb-core/lib/cursor.js:213:36)
at /Users/nikhil/grass/node_modules/mongodb-core/lib/connection/pool.js:456:18
at nextTickCallbackWith0Args (node.js:433:9)
at process._tickCallback (node.js:362:13)

Unneccessary field suggested in content type

Content types are required to have a text field as the first field, if they do not a warning shows.

There are many instances where a content type does not need a text field, but one has to be added anyway resulting in a confusing extra field

Allow raw Mongo queries

It would be nice to run raw Mongo queries a la PHPMyAdmin and MySql. This would reduce the need to drop into a shell when running a custom query or etc.

Backlog: Would be nice to have an extends option for content-types

Lets say you have a contenttype of book and it has fields Title and Author.

It'd be nice to be able to create a type called Biography, extend book and add the field Subject to end up with fields Title, Author and Subject.

The current workaround is to embed the book type in the Biography type, or just manual recreation of fields.... so not a huge deal, but would be good.

Uploaded Files need pagination

When you have a large number of files uploaded to a particular folder the page loading takes a very long time. This could be solved with pagination

NPM install error on node v6.9.1 (probably started at 6x)

I upgraded my node version to the latest and now there are some dependencies that probably need to be updated.

I've included my logs here. All the dependencies should probably be updated.

npm install [email protected]
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
npm WARN deprecated [email protected]: Use the globby package instead
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: use [cross-spawn](https://github.com/IndigoUnited/node-cross-spawn) or [cross-spawn-async](https://github.com/IndigoUnited/node-cross-spawn-async) instead.

> [email protected] preinstall /Users/travman/Development/grasshopper-core-nodejs/node_modules/.staging/typechecker-532510cb
> node ./cyclic.js


> [email protected] preinstall /Users/travman/Development/grasshopper-core-nodejs/node_modules/.staging/js2coffee-eaa61c14
> node ./cyclic.js


> [email protected] preinstall /Users/travman/Development/grasshopper-core-nodejs/node_modules/.staging/cson-bba0104d
> node ./cyclic.js

npm WARN prefer global [email protected] should be installed with -g

> [email protected] postinstall /Users/travman/Development/grasshopper-core-nodejs/node_modules/gifsicle
> node index.js

path.js:7
    throw new TypeError('Path must be a string. Received ' + inspect(path));
    ^

TypeError: Path must be a string. Received { url: 'https://raw.github.com/imagemin/gifsicle-bin/v0.1.7/vendor/osx/gifsicle',
  name: 'gifsicle',
  os: 'darwin' }
    at assertPath (path.js:7:11)
    at Object.basename (path.js:1355:5)
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/download/index.js:35:43
    at each (/Users/travman/Development/grasshopper-core-nodejs/node_modules/each-async/each-async.js:63:4)
    at module.exports (/Users/travman/Development/grasshopper-core-nodejs/node_modules/download/index.js:33:5)
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/bin-wrapper/index.js:108:20
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/bin-wrapper/index.js:141:24
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/bin-check/index.js:30:20
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/executable/index.js:39:20
    at FSReqWrap.oncomplete (fs.js:123:15)

> [email protected] postinstall /Users/travman/Development/grasshopper-core-nodejs/node_modules/jpegtran-bin
> node index.js


> [email protected] postinstall /Users/travman/Development/grasshopper-core-nodejs/node_modules/optipng-bin
> node index.js

path.js:7
    throw new TypeError('Path must be a string. Received ' + inspect(path));
    ^

TypeError: Path must be a string. Received { url: 'https://raw.github.com/imagemin/optipng-bin/v0.3.11/vendor/osx/optipng',
  name: 'optipng',
  os: 'darwin' }
    at assertPath (path.js:7:11)
    at Object.basename (path.js:1355:5)
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/download/index.js:35:43
    at each (/Users/travman/Development/grasshopper-core-nodejs/node_modules/each-async/each-async.js:63:4)
    at module.exports (/Users/travman/Development/grasshopper-core-nodejs/node_modules/download/index.js:33:5)
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/bin-wrapper/index.js:108:20
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/bin-wrapper/index.js:141:24
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/bin-check/index.js:30:20
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/executable/index.js:39:20
    at FSReqWrap.oncomplete (fs.js:123:15)

> [email protected] postinstall /Users/travman/Development/grasshopper-core-nodejs/node_modules/pngquant-bin
> node index.js

path.js:7
    throw new TypeError('Path must be a string. Received ' + inspect(path));
    ^

TypeError: Path must be a string. Received { url: 'https://raw.github.com/imagemin/pngquant-bin/v0.3.5/vendor/osx/pngquant',
  name: 'pngquant',
  os: 'darwin' }
    at assertPath (path.js:7:11)
    at Object.basename (path.js:1355:5)
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/download/index.js:35:43
    at each (/Users/travman/Development/grasshopper-core-nodejs/node_modules/each-async/each-async.js:63:4)
    at module.exports (/Users/travman/Development/grasshopper-core-nodejs/node_modules/download/index.js:33:5)
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/bin-wrapper/index.js:108:20
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/bin-wrapper/index.js:141:24
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/bin-check/index.js:30:20
    at /Users/travman/Development/grasshopper-core-nodejs/node_modules/executable/index.js:39:20
    at FSReqWrap.oncomplete (fs.js:123:15)
[email protected] /Users/travman/Development/grasshopper-core-nodejs
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ └── [email protected]
│ │ │ │ └── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   ├── [email protected]
│ │ │   └─┬ [email protected]
│ │ │     └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected]
│ │ └─┬ [email protected]
│ │   ├─┬ [email protected]
│ │   │ ├── [email protected]
│ │   │ └── [email protected]
│ │   └─┬ [email protected]
│ │     └─┬ [email protected]
│ │       └─┬ [email protected]
│ │         ├── [email protected]
│ │         ├── [email protected]
│ │         └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └─┬ [email protected]
│ │ │ │   ├─┬ [email protected]
│ │ │ │   │ └─┬ [email protected]
│ │ │ │   │   ├─┬ [email protected]
│ │ │ │   │   │ ├── [email protected]
│ │ │ │   │   │ ├─┬ [email protected]
│ │ │ │   │   │ │ ├─┬ [email protected]
│ │ │ │   │   │ │ │ └─┬ [email protected]
│ │ │ │   │   │ │ │   └── [email protected]
│ │ │ │   │   │ │ └── [email protected]
│ │ │ │   │   │ ├── [email protected]
│ │ │ │   │   │ ├── [email protected]
│ │ │ │   │   │ ├── [email protected]
│ │ │ │   │   │ ├─┬ [email protected]
│ │ │ │   │   │ │ └── [email protected]
│ │ │ │   │   │ └─┬ [email protected]
│ │ │ │   │   │   ├── [email protected]
│ │ │ │   │   │   └─┬ [email protected]
│ │ │ │   │   │     └─┬ [email protected]
│ │ │ │   │   │       └── [email protected]
│ │ │ │   │   ├── [email protected]
│ │ │ │   │   ├── [email protected]
│ │ │ │   │   ├── [email protected]
│ │ │ │   │   ├── [email protected]
│ │ │ │   │   └─┬ [email protected]
│ │ │ │   │     ├── [email protected]
│ │ │ │   │     └─┬ [email protected]
│ │ │ │   │       └── [email protected]
│ │ │ │   ├─┬ [email protected]
│ │ │ │   │ ├─┬ [email protected]
│ │ │ │   │ │ └── [email protected]
│ │ │ │   │ └── [email protected]
│ │ │ │   └── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └─┬ [email protected]
│ │ │ │   ├─┬ [email protected]
│ │ │ │   │ └── [email protected]
│ │ │ │   ├── [email protected]
│ │ │ │   ├── [email protected]
│ │ │ │   └── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └── [email protected]
│ │ │ └── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │   ├─┬ [email protected]
│ │   │ └─┬ [email protected]
│ │   │   └── [email protected]
│ │   ├─┬ [email protected]
│ │   │ └── [email protected]
│ │   ├─┬ [email protected]
│ │   │ ├── [email protected]
│ │   │ ├── [email protected]
│ │   │ ├─┬ [email protected]
│ │   │ │ └─┬ [email protected]
│ │   │ │   ├── [email protected]
│ │   │ │   └── [email protected]
│ │   │ └── [email protected]
│ │   ├── [email protected]
│ │   ├── [email protected]
│ │   ├── [email protected]
│ │   └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ └── [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ └── [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ └── [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ ├─┬ [email protected]
│ │ │ │ │ │ └── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ └── [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ └── [email protected]
│ │ │ │ └── [email protected]
│ │ │ └── [email protected]
│ │ └─┬ [email protected]
│ │   ├── [email protected]
│ │   └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ └── [email protected]
└─┬ [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ ├── [email protected]
  │ └── [email protected]
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ ├── [email protected]
  │ │ └── [email protected]
  │ ├── [email protected]
  │ └── [email protected]
  ├─┬ [email protected]
  │ ├── [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ ├── [email protected]
  │ │ └── [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ ├── [email protected]
  │ └── [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├── [email protected]
  └── [email protected]

Create modal, growl, alert services

These should be method calls with window.gh.modal(...), window.gh.alert(...), window.gh.growl(...)
Promise based

modals and growls can be chained - alerts can only be done one at a time

gh admin does not work with latest masseuse ( 2.2.6 )

i believe the error has to do with the new rivets cleanup tasks.

the memory usage seems improved w the latest masseuse, but there are occasional errors probably related to the rivets binders

str
load latest masseuse
go to a page that show breadcrumbs
click on the home breadcrumb

grasshopper fly - failed installing admin

node v6.3.0

Building grasshopper-admin. Please wait, this can take a few minutes. ・・・●・exec error: Error: Command failed: /Users/marco/Programmierung/node/grasshopper/test/node_modules/.bin/grasshopper build
bower contextjs#*                                           invalid-meta for:/var/folders/3s/8b9ykjsn3h10_92mxnvx7kt40000gp/T/marco/bower/ae69027d30342cb2fa72e08c02cc227b-78167-opDeRM/bower.json
bower contextjs#*                                           invalid-meta The "name" is recommended to be lowercase, can contain digits, dots, dashes
bower SparkMD5#*                                            invalid-meta for:/var/folders/3s/8b9ykjsn3h10_92mxnvx7kt40000gp/T/marco/bower/78d00e710581a3a6aea4f00a933ab0f7-78167-HKe5J4/bower.json
bower SparkMD5#*                                            invalid-meta The "name" is recommended to be lowercase, can contain digits, dots, dashes
bower jquery-placeholder#~2.0.7                                 mismatch Version declared in the json (2.0.8) is different than the resolved one (2.0.9)
bower ckeditor#4.3.5                                               retry Download of https://github.com/ckeditor/ckeditor-releases/archive/4.3.5.tar.gz failed with ETIMEDOUT, retrying in 1.7s
bower ace#1.1.3                                                  ECMDERR Failed to execute "git ls-remote --tags --heads https://github.com/ajaxorg/ace.git", exit code of #128 fatal: unable to access 'https://github.com/ajaxorg/ace.git/': Failed to connect to github.com port 443: Operation timed out

Additional error details:
fatal: unable to access 'https://github.com/ajaxorg/ace.git/': Failed to connect to github.com port 443: Operation timed out

Expose {slug:} in the Admin for all objects so that it can be updated to something human readable

Currently our code makes reference to mongo IDs or meta.labels in order to correctly filter content

This is time consuming and not great practice as IDs are not human readable and meta.labels are neither unique nor immutable - If I change a content type label in Cambium or Gerber it will break the site going forward in a way that is difficult to debug

I added functionality for .getBySlug to nodes and contenttypes as part of GH Ecomm but did not change the admin to make use of this.

Once we get this in place we will be closer to being able to define contenttypes in the codebase rather than in the database which is almost essential for creating plugins

Rich text field type doesn't always save content

The steps to reproduce seems to be save some right text, refresh the page, click source, modify source, click save.

expected: newly edited source saves
actualy: previous content still visible

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.