BitPoet

Module: MediaLibrary

Recommended Posts

Hello: i get an error with PW

 

Error: Using $this when not in object context (line 39 of /web/htdocs/www.xxxxxx/home/site/modules/MediaLibrary-master/ProcessMediaLibraries.module) 

pw version 3.0.27

 

Thank you

Share this post


Link to post
Share on other sites
13 hours ago, abmcr said:

Hello: i get an error with PW


Error: Using $this when not in object context (line 39 of /web/htdocs/www.xxxxxx/home/site/modules/MediaLibrary-master/ProcessMediaLibraries.module) 

pw version 3.0.27

Can you try the latest version on git? The error should be fixed with version 0.1.0.

The latest version also incorporates @tpr's fix for the count() on null problem in case someone removes one of the fields from the MediaLibrary template.

@Zeka: I'm still looking into script loading in the frontend question. Currently, it's expected behaviour for an uncoditional autoload module, but I'm of course looking to only have the script loaded when necessary. Might be a while though, as it means a lot of testing and delving through PW's frontend editing code until I know what I'm doing. :)

  • Like 2

Share this post


Link to post
Share on other sites

Hi, I'm new to Processwire and being a PHP novice having a hard time mastering its many complexities. I'm trying to use MediaLibrary but am stuck with a frustrating issue. When I add a Library, the library name appears in the main site navigation - this being a page, obviously. And when I make it hidden, the library page disappears from the Media list, and also from the dropdown when I access is via CKEditor. What am I doing wrong? Your help would be appreciated.

Share this post


Link to post
Share on other sites

Hi @MaryMatlow, that's actually a question I haven't yet thought about, since the pages I use it in assembles their navigation menus through more detailed selectors. I don't know if you could exclude it from your navigation by adding a "template!=MediaLibrary" somewhere. I'll give it some thought and post back here.

  • Like 1

Share this post


Link to post
Share on other sites

BitPoet, thank you for your hint. Adding this to MarkupSimpleNavigation php file worked:

    'selector' => 'template!=MediaLibrary',

Is there a way to access the MediaLibrary through the "choose file" button through admin. This button appears when you include images field for the page.

Thanks once again for your help and a great module.

  • Like 1

Share this post


Link to post
Share on other sites
13 hours ago, MaryMatlow said:

Is there a way to access the MediaLibrary through the "choose file" button through admin. This button appears when you include images field for the page.

Do you mean this button?

imagesfield.png

MediaLibrary is meant to avoid adding files and images to every page anew. Such functionality would copy the selected file/image over to the current page, which would be the opposite. I seem to recall that there's been a module somewhere in the forum that lets you add files or images from other pages, you might try google search with site:processwire.com/talk/ to find it. It should be possible to tweak that module then to only allow MediaLibrary pages if that is your requirement.

  • Like 1

Share this post


Link to post
Share on other sites

Thank you for sharing. Now the management is lot easier.  Every Time my client click on select image they get confused about image management because "Media Library" dropdown is always closed. Is there a configuration to keep Media Library dropdown open all of time? 

Share this post


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

Thank you for sharing. Now the management is lot easier.  Every Time my client click on select image they get confused about image management because "Media Library" dropdown is always closed. Is there a configuration to keep Media Library dropdown open all of time? 

Not yet, but that should be easy to add as a module config option. I'll try to get around to it this week. Stay tuned.

  • Like 2

Share this post


Link to post
Share on other sites

 

7 hours ago, BitPoet said:

Not yet, but that should be easy to add as a module config option. I'll try to get around to it this week. Stay tuned.

You are amazing... Thank you.  

  • Like 1

Share this post


Link to post
Share on other sites
2 hours ago, Speed said:

You are amazing... Thank you.  

I try my best :)

Version 0.1.1 is on GitHub and should be picked up by the module repository soon.

medialibrary-collapsed-option.png

  • Like 2

Share this post


Link to post
Share on other sites

I am having an issue where it works if I put my MediaLibrarys at the top level, but if I make a Regular page Called "Media" and create them under that, it no longer works.  The drop down is just empty.

ie.   /media/people/  (People is the MediaLibrary page)

On the admin/media page it does correctly show the path as: Pages / Media

Share this post


Link to post
Share on other sites

I was able to fix my issue with this change in the MediaLibrary.module file.

Change:

public function ___getPageMediaLibraries($pg) {
		$libraries = array();
		foreach($pg->parents->and($pg) as $ppage) { 
			$libraries = array_merge($libraries, $this->getChildLibraries($ppage));
		}
		
		return $libraries;
	}

To this:

public function ___getPageMediaLibraries($pg) {
		
		$libraries = wire('pages')->find("template=MediaLibrary");
	
		return $libraries;
	}

 

Share this post


Link to post
Share on other sites

While this is a reasonable way of structuring things, it's not a case I'll cover with the module. But that's why I made getPageMediaLibraries hookable. You don't need to modify the original module code, just add a hook in site/ready.php and change the return value there.

wire()->addHookAfter("MediaLibrary::getPageMediaLibraries", null, "myCustomGetLibraries");

function myCustomGetLibraries(HookEvent $event) {
	$event->return = wire('pages')->find("template=MediaLibrary");
}

 

  • Like 2

Share this post


Link to post
Share on other sites

Is there any way to handle over thousand images? The client wants all their images in one place and search would be nice too. Is there any good way to handle this with this module? Loading time is minutes now..

Share this post


Link to post
Share on other sites
On 4/3/2017 at 3:29 PM, tewdin said:

Is there any way to handle over thousand images? The client wants all their images in one place and search would be nice too. Is there any good way to handle this with this module? Loading time is minutes now..

Loading of regular pages might benefit a tiny bit from using my module, but managing images would still be prone to the same delays if you put all images into a single library (which is just a page behind the scenes). You might still be able to make use of it if you can separate images into different libraries (e.g. by categorizing them into logos, photos, product images etc.) so numbers stay manageable. Media Library uses PW's native tools (file/image fields, CKEditor pwimage plugin), and I have to admit, I haven't tested those (and my module) with a big number of images - the module is a result of an internal requirement at work, where the number tends to stay well below 100.

I'd say give it a quick try in a test system (perhaps in conjunction with the FileFieldTweaks option of @tpr's AdminOnSteroids). If you find you need something more elaborate though, @kongondo's Media Manager pro module might be worth a look.

  • Like 2

Share this post


Link to post
Share on other sites
57 minutes ago, BitPoet said:

If you find you need something more elaborate though, @kongondo's Media Manager pro module might be worth a look.

+1

Or you might want to look for non PW solutions which must be integrated for sure, so that is some extra work. I've just read about this one the other day: http://www.responsivefilemanager.com/  

  • Like 1

Share this post


Link to post
Share on other sites
On 4/4/2017 at 1:09 PM, szabesz said:

+1

Or you might want to look for non PW solutions which must be integrated for sure, so that is some extra work. I've just read about this one the other day: http://www.responsivefilemanager.com/  

I am new to ProcessWire and considering using it for a project. PW seems perfect for this project and so far I am very impressed with it. There will be several image galleries though that have hundreds of images in them. The images don't need a description or any other meta, so being able to mange them in a directory for each gallery seems much easier than trying to manage hundreds of images on a page.

I am therefore interested in this approach and have managed to get http://www.responsivefilemanager.com/ working by creating a "galleries" directory at the root level of the site, putting the responsive file manager code there in one directory, and then letting it manage other directories for the galleries. Securing the file manager seems problematic though. It doesn't seem possibly to fully integrate this into the PW User/Login though. I've followed the Bootstrap instructions http://processwire.com/api/include/ and can tie into PW, but $user isn't populated (always "guest"). I can retrieve a user with $wire->users->get, but then isLoggedin() seems to always return true.

I imagine this needs to be done in a Module to have more integration with PW and may look into doing that. I wanted to check first though to see if someone else has done this, or if it doesn't sound like a good idea at all, or other suggestions? Thanks!

Share this post


Link to post
Share on other sites

Thanks for the Media Library! Great.

Just one thing:
It took more than an hour to find out what's going on.
Having this code:

$user->language = $languages->get("en");  
foreach ($wire->pages->find("MediaImages.count>0") as $p) {
  echo '>'.$p->title.'<br>';
}

//Returns all pages having MediaImages. OK

$user->language = $languages->get("de");  //German user
foreach ($wire->pages->find("MediaImages.count>0") as $p) {
  echo '>'.$p->title.'<br>';
}

//Returns nothing.

Why? I was really confused.

Then I found out, that the Media Libary pages do not automatically set non-default languages active. Normal child pages  of "home" do.

Not sure if this is a bug, but I had a hard time with this. :huh:

medialib.png.66ea375da420248ec0d38d523adfbe10.png

Thank you.

  • Like 1

Share this post


Link to post
Share on other sites

@theo: Thank you for the feedback, and I'm glad you like my module :-) I'm going to look into that behavior as soon as I have a little time on my hands.

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites

Hi,

I use Media Library module, sometimes does this:

  • I upload an image, save the page, go out and when came back the image is delete. 

 

Does it happen to you sometimes? Some one know why? and what I ca do?

Thank you

 

  • At moment I fix this just making a new page, in this way work the images aren't deleted, maybe could be a memory problem. I don't know.

 

Share this post


Link to post
Share on other sites

@MarcoPLY,

Moderator Note

I would have thought you've been around long enough to know that module related questions need to be posted in their respective support forums, if such do exist 🙂

I've moved your post to Media Library's support forum.

  • Thanks 1

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 Anssi
      A simple module to enable easy navigation between the public and the admin side of the site. After installation a green bar will appear to the upper side of the screen, containing a few navigation elements and displaying the PW version number.
      Heavily inspired by @apeisa's great AdminBar (Thanks!). I needed a bit simpler tool for my projects and as a result, this was made. Available on GitHub .

    • By Sebi
      I've created a small module which lets you define a timestamp after which a page should be accessible. In addition you can define a timestamp when the release should end and the page should not be accessable any more.
      Github: https://github.com/Sebiworld/PageAccessReleasetime
      Usage
      PageAccessReleasetime can be installed like every other module in ProcessWire. Check the following guide for detailed information: How-To Install or Uninstall Modules
      After that, you will find checkboxes for activating the releasetime-fields at the settings-tab of each page. You don't need to add the fields to your templates manually.
      Check e.g. the checkbox "Activate Releasetime from?" and fill in a date in the future. The page will not be accessable for your users until the given date is reached.
      If you have $config->pagefileSecure = true, the module will protect files of unreleased pages as well.
      How it works
      This module hooks into Page::viewable to prevent users to access unreleased pages:
      public function hookPageViewable($event) { $page = $event->object; $viewable = $event->return; if($viewable){ // If the page would be viewable, additionally check Releasetime and User-Permission $viewable = $this->canUserSee($page); } $event->return = $viewable; } To prevent access to the files of unreleased pages, we hook into Page::isPublic and ProcessPageView::sendFile.
      public function hookPageIsPublic($e) { $page = $e->object; if($e->return && $this->isReleaseTimeSet($page)) { $e->return = false; } } The site/assets/files/ directory of pages, which isPublic() returns false, will get a '-' as prefix. This indicates ProcessWire (with activated $config->pagefileSecure) to check the file's permissions via PHP before delivering it to the client.
      The check wether a not-public file should be accessable happens in ProcessPageView::sendFile. We throw an 404 Exception if the current user must not see the file.
      public function hookProcessPageViewSendFile($e) { $page = $e->arguments[0]; if(!$this->canUserSee($page)) { throw new Wire404Exception('File not found'); } } Additionally we hook into ProcessPageEdit::buildForm to add the PageAccessReleasetime fields to each page and move them to the settings tab.
      Limitations
      In the current version, releasetime-protected pages will appear in wire('pages')->find() queries. If you want to display a list of pages, where pages could be releasetime-protected, you should double-check with $page->viewable() wether the page can be accessed. $page->viewable() returns false, if the page is not released yet.
      If you have an idea how unreleased pages can be filtered out of ProcessWire selector queries, feel free to write an issue, comment or make a pull request!
    • By David Karich
      Thanks to the great Pro module "RepeaterMatrix" I have the possibility to create complex repeater items. With it I have created a quite powerful page builder. Many different content modules, with many more possible design options. The RepeaterMatrix module supports the cloning of items, but only within the same page. Now I often have the case that very design-intensive pages and items are created. If you want to use this module on a different page (e.g. in the same design), you have to rebuild each item manually every time.
      With this proof of concept I have created a module which adds the feature to copy a repeater item to the clipboard so that you can paste this item to another page with the same repeater field. The module has been developed very rudimentarily so far. It is currently not possible to copy nested items. There is also no check of Min/Max. You can also only copy items that have the same field on different pages. And surely you can solve all this more elegantly with AJAX. But personally I lack the deeper understanding of the repeaters. Also missing on the Javascript side are event triggers for the repeaters, which would make it easier. Like e.g. RepeaterItemInitReady or similar.
      it would be great if @ryan would implement this functionality in the core of RepeaterMatrix. I think he has better ways to implement this. Or what do you think, Ryan?
      Everybody is welcome to work on this module and improve it, if it should not be integrated into the matrix core. Therefore I put it for testing and as download on GitHub: https://github.com/FlipZoomMedia/InputfieldRepeaterMatrixDublicate
      You can best see the functionality in the screencast: 
       
    • By anderson
      Hi,
      Please take a look at this:
      https://templatemag.com/demo/Good/
      The upper nav bar, including dropdowns like "pages" and "portfolios", what do you call this whole thing? At first I guess it's called "dropdown nav bar", but seems not.
      AND of course, what's the simplest way/module to achieve this in PW?
      Thanks in advance.
    • By Sebi2020
      Hey, I'm new and I created a simple module for tagging pages because I didn't found a module for it (sadly this is not a core feature). This module is licensed under the GPL3 and cames with absolutly no warranty at all. You should test the module before using it in production environments. Currently it's an alpha release. if you like the module or have ideas for improvements feel free to post a comment. Currently this fieldtype is only compatible with the Inputfield I've created to because I haven't found  an Inputfield yet, that returns arrays from a single html input.
      Greetings Sebi2020
      FieldtypeTags.zip.asc
      InputfieldTagify.zip
      InputfieldTagify.zip.asc
      FieldtypeTags.zip