tpr

Module
AdminOnSteroids

781 posts in this topic

@Robin S Could you tell if there's a body class or something that I can use to disable the relative position for H1's on those sites? I don't have ProDevTools to check.

@Speed Could you elaborate a bit more? Also, what AOS version are you using? A few versions ago the search could be focused using double-tap the Shift key but that was removed because such issues you mentioned.

Share this post


Link to post
Share on other sites
8 hours ago, tpr said:

@Robin S Could you tell if there's a body class or something that I can use to disable the relative position for H1's on those sites? I don't have ProDevTools to check.

Nothing useful on the body I think but there is a class on the h1 and also its containing div:

2016-12-15_093642.png

1 person likes this

Share this post


Link to post
Share on other sites

v109 is up - see the readme file on date formattig:

  • PageListTweaks: ability to format unix timestamps in pagelists
  • PageListTweaks: using %field.property% will output the value in the user's language (if available)
  • PageListTweaks: always show extra actions
  • fixed language translator filterbox not appearing
  • possible fix for unclickable select dropdowns in ProDevTools API Explorer (reported by Robin S.)

"Always show extra actions" was a client request and removes the need to click on the ">" icon to see the extra actions. This can be handy for power users or when you often need to toggle pub/hidden states of pages. Or simply lazy :)

aos-alwaysshowextraactions.png

 

4 people like this

Share this post


Link to post
Share on other sites
On 12/14/2016 at 6:03 AM, tpr said:

 

@Speed Could you elaborate a bit more? Also, what AOS version are you using? A few versions ago the search could be focused using double-tap the Shift key but that was removed because such issues you mentioned.

Usually, If you click on any input box in PW you'd see cursor blinking. This will confirm that input box is active. Now If you hold down Shift key on keyboard before you could hit on any keys on keyboard (i.e. to create first capital letter). The input box becomes deactive, the blinking cursor will disappear  The current version i had problem was 0.9.7.  I just updated to 1.0.9... Unfortunately, the problems still exist. 

Share this post


Link to post
Share on other sites
On 12/15/2016 at 10:43 AM, tpr said:

 

Is the search box activated? The feature I was referring was removed in v0.999 so perhaps it's only a cache issue on your side. Try hard reload and see if it helps.

 

Yes, clearing cache have solved issues... Now I am facing a new problem right after updating. This come from old tread discussion on page tree If you can remember...

With this code that saved in /site/template/admin.css...

.PageListItem:not(.PageListItemOpen) 
span.PageListNumChildren.detail:not(:empty):before {
    content: " ← click to show children - Number of Children: " !important;
}

This showed up without problem on localhost running latest update of AOS 1.0.9

localhost.JPG

after transferring files from localhost into livehost... It doesn't show, seem like admin.css isn't recognized.

livehost.JPG

It happen right after I updated AOS 1.0.9. However, I tried another approach. I've added site/template/admin.css into asset path it still wouldn't recognize. I have uninstall and reinstall, refresh cache and yet problem still exisit. 

 

Share this post


Link to post
Share on other sites

admin.css works fine here with the code above, in PW 3.042, AOS 1.0.9. I see you have "site/template" and not "site/templates", is that only a typo?

Can you check using the Network tab in the devtools that admin.css is not loaded? (using Chrome, you can filter by file types)

Share this post


Link to post
Share on other sites

Template with no "s" was my typo in this thread only.

Here's dev tool

filter.jpg

Seem like it did not admin.css when i filtered it out. Although file is already there in livehost site same way I did in localhost.

ftp.jpg

 

 

 

 

Share this post


Link to post
Share on other sites

hi tpr,

do you know where this glitch comes from?

how it should be (AOS off):

2016-12-18 15_08_54-Program Manager.png

how it is (simple process module just returning "hallo"). sticky header OFF:

2016-12-18 15_09_08-Program Manager.png2016-12-18 15_10_20-Program Manager.png

is this a bug or did i forget a setting? thank you for your help!

Share this post


Link to post
Share on other sites

h1 is float: left; - i don't know why, it must have to be a setting of AOS. it's quite hard to find out what setting it could be so i thought you may have an idea?

Share this post


Link to post
Share on other sites

It's the "headBtnToTitle" as you can see in the dev tools, coming from "Place header button next to the main title" from RenoTweaks.

1 person likes this

Share this post


Link to post
Share on other sites

@Speed are you sure you can access admin.css directly in your browser? Plus AOS checks if the file exists, can you confirm that PHP can access it? (maybe a file permission issue?)

Share this post


Link to post
Share on other sites
5 hours ago, tpr said:

@Speed are you sure you can access admin.css directly in your browser? Plus AOS checks if the file exists, can you confirm that PHP can access it? (maybe a file permission issue?)

Edit: File permission for admin.css is set at 644 as default following config.php.  I have created new css file and call them two.css, added same code string, and set   site/templates/two.css into asset path. It doesn't detect two,css either. Can you elaborate how could I access admin.css through browser. Sure I can access .css for template with browser but not knowing how I could this for admin. 

Here are view source for Admin... it seem like it isn't detecting admin.css from site/templates/...

viewSource.JPG

Share this post


Link to post
Share on other sites

Thanks, just noticed you are running PW from a subfolder so most probably AOS is using relative paths and that's why the assets are not loaded. I will post a fix soon.

1 person likes this

Share this post


Link to post
Share on other sites

v112 is uploaded and contains the submenu feature for custom nav items. See the readme for the instructions.

On the default theme its appearance is similar to the other 3rd level menus:

aos-submenus.gif

3 people like this

Share this post


Link to post
Share on other sites
On 12/20/2016 at 2:40 AM, tpr said:

 

@Speed

Could you try this? It's working for me when PW is in a subdir or in the root.

AdminOnSteroids.module

 

Module that work for you... was this working on localhost or livehost?  It didn't work on me when I download and tried yours from livehost but worked on localhost. Although I did some test, I've added the code string at the very bottom of AdminOnSteroids.css. and this worked on livehost. So I am guessing somewhere in your module, i didn't detect admin.css in subpage of livehost. 

Share this post


Link to post
Share on other sites

I tried it on two servers (livehost), in a subdir and in the root.

You could try to uncomment the series of bd() calls in line 913 and further down in 961 to see what paths/urls AOS tries to use (requires Tracy Debugger).

You can update the module from the directory as it contains these fixes.

Share this post


Link to post
Share on other sites

Hello @tpr

here is an idea, what can also be useful for admins: It would be great if there will be a drag and drop possibility in the forms to change the position of a field in the form itself. You have added a great function to edit a field directly from the form.  So changing the position of the field in the form directly would also be a great addon (but maybe difficult to implement?!?)

I hope you understand what I mean. At the moment you have to open the template directory and change the position of the fields there.

With roles permission you can make this only accessable for superusers. Its only an idea.

Best regards Jürgen

Share this post


Link to post
Share on other sites

I think this feature won't be that hard to implement but I see it as an edge-case so I'm not sure too many users would use it.

The UI would be another question, I think the current "Edit template" tooltip could have an extra icon (eg. "Edit fields order"), and clicking on it the fields could be drag-and-dropped. But again, I would like to see others voting for this feature.

Share this post


Link to post
Share on other sites

i don't understand what you mean jürgen... you can edit the field's position in the template editor. it's only 1 click away from the page-edit-screen.

Share this post


Link to post
Share on other sites

But it's not wysiwyg and he's getting lazy at the end if the year :)

2 people like this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By abdus
      After this tutorial you'll have learned how to:
      Build a Process module Make an AJAX request to backend Serve JSON as response Let's say you want to display the latest orders in a dashboard that you can access from admin panel. And you want it to refresh its content with a button click. Most straightforward and proper way (that I know of) is to create a Process module, as they're built for this purpose.
      First, create a directory under /site/modules/, call it ProcessDashboard, and create a file named ProcessDashboard.module under that directory. Following is about the least amount of code you need to create a Process module.
      <?php namespace ProcessWire; class ProcessDashboard extends Process { public static function getModuleInfo() { return [ 'title' => 'Orders Dashboard', 'summary' => 'Shows latest orders', 'version' => '0.0.1', 'author' => 'abdus', 'autoload' => true, // to automatically create process page 'page' => [ 'name' => 'order-dashboard', 'title' => 'Orders', 'template' => 'admin' ] ]; } public function ___execute() { return 'hello'; } } Once you refresh module cache from Modules > Refresh, you'll see your module. Install it.

      It will create an admin page under admin (/processwire/) and will show up as a new item in top menu, and when you click on it, it will show the markup we've built in execute() function.

       
      All right, now let's make it do something useful. Let's add create a data list to display latest orders. We'll change execute() function to render a data table.
      public function ___execute() { /* @var $table MarkupAdminDataTable */ $table = $this->modules->MarkupAdminDataTable; $table->setID($this->className . 'Table'); // "#ProcessDashboardTable" $table->headerRow([ 'Product', 'Date', 'Total' ]); // fill the table foreach ($this->getLatest(10) as $order) { $table->row([ $order['title'], $order['date'], $order['total'] ]); } // to refresh items $refreshButton = $this->modules->InputfieldSubmit; $refreshButton->name = 'refresh'; $refreshButton->id = $this->className . 'Refresh'; // "#ProcessDashboardRefresh" $refreshButton->value = 'Refresh'; // label of the button return $table->render() . $refreshButton->render(); } where getLatest() function finds and returns the latest orders (with only title, date and total fields)
      protected function getLatest($limit = 5, $start = 0) { // find last $limit orders, starting from $start $orders = $this->pages->find("template=order, sort=-created, limit=$limit, start=$start"); // Only return what's necessary return $orders->explode(function ($order) { return [ 'title' => $order->title, 'date' => date('Y-m-d h:i:s', $order->created), 'total' => $order->total ]; }); } When you refresh the page, you should see a table like this

      Now we'll make that Refresh button work. When the button is clicked, it will make an AJAX request to ./latest endpoint, which will return a JSON of latest orders. We need some JS to make AJAX request and render new values. Create a JS file ./assets/dashboard.js inside the module directory.
      window.addEventListener('DOMContentLoaded', function () { let refresh = document.querySelector('#ProcessDashboardRefresh'); let table = document.querySelector('#ProcessDashboardTable'); refresh.addEventListener('click', function (e) { // https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault e.preventDefault(); // Send a GET request to ./latest // http://api.jquery.com/jquery.getjson/ $.getJSON('./latest', { limit: 10 }, function (data) { // check if data is how we want it // if (data.length) {} etc // it's good to go, update the table updateTable(data); }); }); function renderRow(row) { return `<tr> <td>${row.title}</td> <td>${row.date}</td> <td>${row.total}</td> </tr>`; } function updateTable(rows) { table.tBodies[0].innerHTML = rows.map(renderRow).join(''); } }); And we'll add this to list of JS that runs on backend inside init() function
      public function init() { $scriptUrl = $this->urls->$this . 'assets/dashboard.js'; $this->config->scripts->add($scriptUrl); } Requests to ./latest will be handled by ___executeLatest() function inside the module, just creating the function is enough, PW will do the routing. Here you should notice how we're getting query parameters that are sent with the request.
      // handles ./latest endpoint public function ___executeLatest() { // get limit from request, if not provided, default to 10 $limit = $this->sanitizer->int($this->input->get->limit) ?? 10; return json_encode($this->getRandom($limit)); } Here getRandom() returns random orders to make it look like there's new orders coming in. 
      protected function getRandom($limit = 5) { $orders = $this->pages->find("template=order, sort=random, limit=$limit"); return $orders->explode(function ($order) { return [ 'title' => $order->title, 'date' => date('Y-m-d h:i:s', $order->created), 'total' => $order->total ]; }); } And we're done. When refresh button is clicked, the table is refreshed with new data.
      Here it is in action: 
      2017-04-29_19-01-40.mp4 (227KB MP4, 0m4sec)
      Here's the source code:
      https://gist.github.com/abdusco/2bb649cd2fc181734a132b0e660f64a2
       
      [Enhancement] Converting page titles to edit links
      If we checkout the source of MarkupAdminDataTable module, we can see we actually have several options on how columns are built.
      /** * Add a row to the table * * @param array $a Array of columns that will each be a `<td>`, where each element may be one of the following: * - `string`: converts to `<td>string</td>` * - `array('label' => 'url')`: converts to `<td><a href='url'>label</a></td>` * - `array('label', 'class')`: converts to `<td class='class'>label</td>` * @param array $options Optionally specify any one of the following: * - separator (bool): specify true to show a stronger visual separator above the column * - class (string): specify one or more class names to apply to the `<tr>` * - attrs (array): array of attr => value for attributes to add to the `<tr>` * @return $this * */ public function row(array $a, array $options = array()) {} This means, we can convert a column to link or add CSS classes to it.
      // (ProcessDashboard.module, inside ___execute() method) // fill the table foreach ($this->getLatest(10) as $order) { $table->row([ $order['title'] => $order['editUrl'], // associative -> becomes link $order['date'], // simple -> becomes text [$order['total'], 'some-class'] // array -> class is added ]); } Now, we need to get page edit urls. By changing getLatest() and getRandom() methods to return edit links in addition to previous fields
      protected function getLatest($limit = 5, $start = 0) { // find last $limit orders, starting from $offset $orders = $this->pages->find("template=order, sort=-created, limit=$limit, start=$start"); return $orders->explode(function ($order) { return [ 'title' => $order->title, 'date' => date('Y-m-d h:i:s', $order->created), 'total' => $order->total, 'editUrl' => $order->editUrl ]; }); } protected function getRandom($limit = 5) { $orders = $this->pages->find("template=order, sort=random, limit=$limit"); return $orders->explode(function ($order) { return [ 'title' => $order->title, 'date' => date('Y-m-d h:i:s', $order->created), 'total' => $order->total, 'editUrl' => $order->editUrl ]; }); } and tweaking JS file to render first column as links
      function renderRow(row) { return `<tr> <td><a href="${row.editUrl}">${row.title}</a></td> <td>${row.date}</td> <td>${row.total}</td> </tr>`; } we get a much more practical dashboard.

       
    • By abdus
      I'm building a module using Comments field as reference. Inside Comments module and many others, there's always this expression which is used to inject dependencies (according to Wire class documentation)
      $fieldset = $this->wire(new InputfieldWrapper()); Is there a reason for injecting API variables inside objects? Because everything seems to work fine without.

    • By matjazp
      Module: Auto Smush PDF
      https://github.com/matjazpotocnik/AutoSmushPDF 
      Compress PDF files automatically on upload,  manually by clicking the link for each file and in bulk mode for all PDF files.
      In Automatic mode PDF files that are uploaded are automatically compressed.
      In Manual mode "Compress" link will be present. This allows manual compression of the individual PDF file.
      In Bulk mode all PDF files can be compressed in one click. Will process PDF files sitewide, use with caution! 
      Using https://labstack.com/, free (at the moment) online web service that provides compressing of PDF files. There is no limit in file size and no limit on number of uploaded PDF's. No privacy policy available. 
       
      EDIT April 30 2017: This module is not working anymore as Labstack removed support for pdf compression.
    • By justb3a
      Little admin helper module: Using this module you can view all template cache settings at once. E.g. cache status, cache time (configurable). Furthermore it adds the functionality to clear the entire template cache or just the template cache for a given template. Note that this may cause a temporary delay for one or more requests while pages are re-cached.

      GitHub: https://github.com/justb3a/processwire-templatecacheoverview
    • By blad
       
      Hi guys!
      I'm creating a module to manage, edit, publish ... pages. It is very similar to ProcessBatcher.
       
       
      Changelog:
      In progress 
      Features:



      Select pages with your mouse like a desktop enviroment. If you press "edit" the selected pages will appear in a lightbox.


      Drag pages to do actions.
      Any feedback is welcome