Giter Club home page Giter Club logo

ideas's Introduction

Statamic Logo

Statamic

Statamic is the flat-first, Laravel + Git powered CMS designed for building beautiful, easy to manage websites.

Note: This repository is used for collecting Feature Requests. To start your own website project with Statamic, visit the Statamic application repository.

💡 Ideas & Feature Requests

This repo is for collecting and discussing ideas and feature requests for Statamic. Please check if an idea or FR has been opened already before starting a new thread (issue), but otherwise let's dig in! You can also come chat in the #help channel in Discord if you'd like to keep things real-time.

Code of Conduct

In order to ensure that the Statamic community is welcoming to all and generally a rad place to belong, please review and abide by the Code of Conduct.

Important Links

ideas's People

Contributors

duncanmcclean avatar jackmcdade avatar jasonvarga 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  avatar  avatar  avatar  avatar

Watchers

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

Forkers

seanpm2001

ideas's Issues

Alias all closing tags in Antlers with `end`

In v2, there's a mixed pattern of how you can close tags. For example, you can write:

{{ if condition }}
    // Code goes here
{{ endif }}

and

{{ if condition }}
    // Code goes here
{{ /if }}

But others like collection don't have that alias.

{{ collection from="blog" }}
    // Code goes here
{{ /collection }}

It's a personal preference (granted), but I'd love to be able to have a consistent alias that would enable users to close tags with the keyword end, as well as the /. E.g.

{{ collection from="blog" }}
    // Code goes here
{{ endcollection }}

Ability to display generic messages from statamic.com

Since we cannot predict features or changes, it would be nice to have some sort of way to communicate with users in the CP in a generic way.

eg.

  • You need to do bla bla to your account on statamic.com
  • Your version has a security issue
  • We've updated the terms and conditions
  • There's free pizza in the lobby

FR: Reorder Structures

Structures are ordered alphabetically but it would improve the sidebar navigation if we could number order the listing to move Structures of higher importance (Pages) to the top of the list.

Screen Shot 2019-10-24 at 2 54 43 pm

FR: Content Model and Routing step improvements

As users are still learning the new concepts introduced in V3, it would be help to reiterate the purpose and importance of Blueprint and Structures in the Create Collection wizard.

  1. Could add the dashboard definition for the Blueprint field.

Blueprints define the custom fields used to create and store your content.

Screen Shot 2019-10-25 at 1 35 37 pm

  1. Same goes for the Structure field in the Routing step.

Structures establish the heirarchy of your pages and help you manage your site navigation.

Screen Shot 2019-10-25 at 1 42 38 pm

  1. It would also be useful to know which fields are required and which are optional. As I understand it, a Blueprint is required and a Structure is optional. Is that right?

FR: Create folder while creating Asset field

When creating an Asset field in the field builder, users should be able to Create folder in the Asset field Settings and the Folder listing screens.

Settings:
Screen Shot 2019-10-24 at 11 05 44 am

Folder Listing:
Screen Shot 2019-10-24 at 11 06 07 am

Cache Filesystem requests

We can benchmark the number of times we reach out and hit the filesystem with fs_usage. There are different types of touches -- stat, lstat, read, write, etc. We should be able to limit these to once per type per request, and hopefully jack up some performance gains.

Logging the file system activity:

Run the following command and hit the system with a single request:

sudo fs_usage php-fpm -f filesys -w > ~/Desktop/fs_log.txt

And then we can pop that file open and find results for specific .yaml or .md files to see how many times they've been touched.

Assets manager - tweak UX/UI for consistency

Parts of the Assets manager might be a bit confusing, especially for a less savvy user.
(this might belong in the ideas repo)

  • Create Container button is always visible. It might confuse or accidentally be clicked when a user wants to Create Folder (Folder vs Container...). Both those buttons are also very close to each other. Maybe the Create Container button doesn't need to be there once you're in a container.

  • Folders are not selectable in either grid or list mode. Inconsistent with behaviour when clicking on files.

  • Clicking on a file in list mode opens up the "Edit file" modal, but in grid mode it selects the file and allows easy multiple file selection. The same behaviour in both display modes would be more consistent. Maybe show a checkbox when hovering on a grid file preview to allow for selection (as in list mode), otherwise, click = edit file.

Commands: make:addon should generate more boilerplate

  • resources/js/addonname.js
  • webpack.mix.js compiling addonname.js into dist/js
  • package.json with just enough to compile assets
  • The ServiceProvider's should have a $scripts array pointing at addonname.js
  • .gitignore with node_modules and vendor

Define preset to use in composer arguments

Out of the box, Statamic 3 comes with a resources folder that contains a sass folder. I, like many others, don't use Sass/Scss. I use PostCSS. While it's trivial to delete that folder, it would be great if there was an ability to define a front end preset to use during the composer command.

FR: Change field type

I don't think this is possible cause it could break things, but I found myself wanting to do this many times in both v2 and v3. Often I'll find myself wanting to change a fieldset from a textarea fieldtype to a markdown fieldtype. To do this, you must delete and recreate the field.

Would be useful to add a "Change fieldset" action for similar fieldtypes. Perhaps show a warning if the data could produce an error.

Screen Shot 2019-10-24 at 11 20 15 am

The assets:meta command should clean up orphaned meta files

If a user manually moves an asset but forgets to move the meta file with it, the new one will eventually get created which is fine, but the old one will just sit there forever.

In the command, after the meta files are generated, we could loop over all meta files and delete them if there's no corresponding asset.

Maybe the cleanup part could also be extracted to its own command.

FR: Reuse blueprints and columns from user preferences in selector stack of Relationship fieldtype

It would be much better to just use the columns from a user's preferences to render a selector stack when linking an entry from a collection using the Relationship fieldtype. Right now, when we use <relationship-fieldtype> in one of our components or even a Bard toolbar button child component, we have to re-implement logic on what columns to show for what collections in that stack, after we already added that logic to our wrapping PolygonRelationship, even though it's right there in the user preferences.

[UX] Validation rules, suggestions while typing.

Description

This is mildly annoying that i need to click into this dropdown to see all the rules.
It would be nice if i could start typing, and suggestions would appear.

Screen Shot 2019-09-24 at 01 46 45

Something akin to this:

Screen Shot 2019-09-24 at 01 49 35

Be able to `slug` any text field

I have found myself needing a "slug" field based on another field (not the title). Would be great if we could "attach" the slug to a text field.

FR: Duplicate fieldset

When creating new fieldsets it would be useful to have an action to Duplicate Fieldset.

Screen Shot 2019-10-24 at 12 01 13 pm

Auto-registering trait in addon service provider

It might be cool to include a trait in the addon service provider stub to auto-register fieldtypes/filters/tags/etc. for the user. If the trait is used, the service provider would loop through the appropriate folders, loop over the files, and auto-register everything. If it's too magical for a user, they can remove the use trait statement.

My thought is this... In Laravel, so many times I’ve developed a policy and forgot to register it, only to waste 5 minutes fumbling before realizing. I think I remember a tweet where Taylor said he was working on a convention to auto-register policies with models using a naming convention? That said, there are other things in Laravel that will always require registering, like middleware.

Pros: Make it easier for new users to develop for marketplace. Remove that extra mental step that some people might forget.

Cons: Development time? Any others?

😊

Collection creation

Dates step:
The wording on these options could be simplified. Some ideas:

Articles – Entries will be private until a date in the future.
Events – Entries will be private after a certain date.
No dates – Entries will not have any dates.

Order step:
I'd expect Alphabetical to default to ascending.

Content Model step:
Would be nice if Blueprints, Taxonomies, etc linked out to the page where you could create them. First thing I did when setting up a new site was create the collection and I hadn't set up anything from this step. Assume I could go back and link it later.

Make addon with artisan generated things

Right now we support make:addon with statamic things...

Screen Shot on 2019-03-29 at 11-11-09

It'd be cool to also generate with artisan things (ie. -c to generate a controller, -l to generate listener, etc), moving to proper addon location with proper namespace, etc.

Note: I have a half working git stash, if/when we choose to do this 👍

Editable items when Relationship field is in select mode

Just because it looks like a select, doesn't mean you shouldn't be able to edit stuff.

Make the items clickable and have them open in a stack like the non-select UI mode.

This applies to the taxonomy / taxonomies / terms field. Throwing this sentence in for search keyword juice :)

FR: add `group_by_with_keys` modifier

I've always thought that the group_by modifier should return the actual keys in a way you can loop through them like this:

      {{ collection:store_products as="types" }}
        {{ types group_by_with_keys="type" }}
          <ul>
          {{ groups }} <!-- this is each 'type'-->
            {{ group }} <!-- this will be the `id` of the type, so in your case you'll likely want to feed that into a relate tag -->
            {{ relate:group }}
              {{ title }}
            {{ if first }}<li><h1>{{ title }}</h1></li>{{ /if }}
            {{ item as="products" }}
              <ul>
              {{ products }}
                <li>{{ title }}</li>
              {{ /products }}
              </ul>
            {{ /item }}
        {{ /groups }}
      {{ /types }}
    {{ /collection...... }}

So I made one:

class GroupByWithKeysModifier extends Modifier
{
    /**
     * Modify a value
     *
     * @param mixed  $value    The value to be modified
     * @param array  $params   Any parameters used in the modifier
     * @param array  $context  Contextual values
     * @return mixed
     */
    public function index($value, $params, $context)
    {
        $group = [];

        $keyedItems = collect(Modify::value($value)->groupBy($params)->fetch())
            ->map(function ($item, $key) {
                return ['group' => $key, 'item' => $item];
            })->values()
            ->all();

        return Arr::set($group, 'groups', $keyedItems);
    }
}

Should I do a PR?

Toggle dev mode for super users?

Maybe It could be useful in a series of cases, for example to show automatically labels for fields instead of title (without click) or to show direct doc links in section or under particular fields type.

Could it make sense?

[UX] Validation rules, suggestions while typing.

Description

This is mildly annoying that i need to click into this dropdown to see all the rules.
It would be nice if i could start typing, and suggestions would appear.

Screen Shot 2019-09-24 at 01 46 45

Something akin to this:

Screen Shot 2019-09-24 at 01 49 35

Multi-Site groups

Imagine having a company that has multiple locations. Each of those locations should be managed through their own site. Clear case of a multi site.

Let's assume we have a company with 3 locations/variations and 2 translations. This would create 6 different site versions, which would mean, if a user was to create or edit an entry, the user would see 5 other options to choose from for creating/editing the other translation as well.

But now, let's assume we could combine different sites to a group. Let's say location 1 (default lang) with location 1 (secondary lang). This would allow for having a clear separation between variations of a site and its translations. Now, a user would only see one option to choose from if the user was to edit/create an entry and wants to switch between the languages.

This feature would make statamic the most comprehensive CMS on the market for multi site support as it would allow to set up some really fine grained details.

Column only fields

Fields that are only used in the column view, so you can show custom things.

Localizable Routes

It should be possible to make a route appear in only certain sites, or differently depending on the site.

FR: Events - pass in old data & and `is_dirty` boolean

There have been several times where it's very useful for a listener to check the old version to see if anything has changed (dirty).

Reason for this is that sometimes you have to update the data and therefore call $data->save(), which fires the events again. This creates an infinite loop.

I currently solve this by copying the core "save" code into my listener so the events aren't fired again.

Option would be able to call save with a "don't fire events" param? Or expose a deeper save method that is only in charge of saving and not firing events?

Any chance we could get that for v3?

"Quick Start" in the docs

Yay! Congrats on v3 public beta, and sorry I've been out of the loop for a while.

I've been looking through the v3 docs on statamic.dev and - with my "I'm coming from another CMS" hat on, I feel like there's a lot of complicated, heavy, technical stuff to get through (Core concepts, templating/front end) before I actually find out how to use Statamic.

This is very much developer documentation, not user documentation.

This may be very deliberate. And it may be that you have a plan for user docs. And it may be that the "Screencasts" page which currently 404's will cater for this.

But I also wonder if another "path" to reading the docs should be made, one that enables people to get up and running more quickly so that they can check out Statamic without having to invest a heap of time in reading so much.

What do you think?

Dev request - please type hint variables/methods etc

Would be great if the intelligence tools could jump around the code, but it can't when the vars have no type hints. For example these:

    protected $stache;
    protected $paths;
    protected $uris;
    protected $uriQueue = [];
    protected $items;
    protected $loaded = false;
    protected $updated = false;
    protected $expired = false;
    protected $markUpdates = true;
    protected $files;

Would be great if $stache was type hinted so the reflection finder thingy worked in VS Code.

Obviously not urgent but a great nice to have for us folks trying to figure out how all this works.

Add Purpose to Create Structure screen

The starting screen for Create Structure might be an opportunity to introduce the concepts of Collection and Navigation structures. It would help solidify the user's understanding of how Structures can be used, and would also reduce the amount of steps in the following Wizard flow.

This could be a useful pattern for other Create screens such choosing how Collections should be ordered.

Screen Shot 2019-11-20 at 11 34 02 am

Allow setting values of fields in Bard sets via Vuex

We would like to be able to set the value of a field that's inside a Bard Set. Currently, those seem to not be represented in Vuex except for the ProseMirror JSON of the Bard field.

Our use case: We have a Set that has fields A and B, where A is of a custom field type. From A's Vue code we want to modify the value of the B field.

Our current workaround is to render B from within A, and save the values together as an object under A's handle. This has multiple drawbacks like non-standard padding in the UI around input fields and the B field not being represented in the blueprint.

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.