Jump to content

rick

Members
  • Posts

    635
  • Joined

  • Last visited

  • Days Won

    6

Posts posted by rick

  1. Hi @gebeer,

    Great point. I read those two articles back when they were published, but hadn't delved further because I haven't seen any forum posts regarding its use. I basically forgot about these two articles, so thank you for bring up the subject again.

    I may have a couple of cases where page class would be beneficial to my projects. That being said, I would  be interested in seeing an example of your implementation of page classes as modules since I am more of a visual learner, if that is at all possible.

    1 hour ago, gebeer said:

    Which way do you prefer and why?

    I've stuck with using modules simply because what I believe is ease of installation. I can distribute a module without manually adding to, or changing a user's directory structure as it is implied in Ryan's article. I'm curious how page classes could be included in a process and/or module distribution and installation.

    I hope I made some sense as I am still a bit confused.

  2. 1 hour ago, EyeDentify said:

    But imagine that i was not that advanced and just wanted some documentation to know how the field worked and should be used, where could i find that without going through the code itself?

    I know what you are looking for. Unfortunately, there isn't any. However, there is another alternative search that might help. For example:
    site:processwire.com/talk your-query-here

    You can substitute "blog" for "talk" (talk == this forum) and get a listing of articles covering your specific query, which is the closest thing to the type of documentation you are accustomed to.

    I see by your post count you have been here a while, so you know how helpful all the members are when you have a question. That is one of the best things about ProcessWire; This community.

    • Like 1
  3. Has anyone run into the actions set for MarkupAdminDataTable not being shown?

    // Example code:
    $table =$this->wire('modules')->get('MarkupAdminDataTable');
    $table->setEncodeEntities(false);
    $table->setSortable(true);
    $table->action = array('Home' => './');
    $table->headerRow(['Name', something']);// yes, i use two array syntaxes for testing
    $table->row( array( "Red Skelton", "some data" ) );
    $table->render();
    // End Example code
    
    
    // MarkupAdminDataTable.module 
    // line 229:
    public function action(array $action) {
      foreach($action as $label => $url) { 
     	 $this->actions[$label] = $url;
      }
      return $this;
    }
    
    // And line 317:
    if(count($this->actions)) {
        $out .= "\n<p>";
        foreach($this->actions as $label => $url) {
          /** @var InputfieldButton $button */
          $button = $this->modules->get("InputfieldButton"); 
          $button->href = $url;
          $button->value = $label;
          $out .= $button->render();
        }
    	$out .= "\n</p>";
    }
    
    return $out; 

    The table is displayed correctly, minus the action. There is no dom reference in dev tools for the action -- as if it was ignored. Tracy (bd($table);) shows the action as defined.

    What am I overlooking?

     

  4. Kind of embarrassed to mention my setup as it is all old school style stuff.

    • local and remote LAMP stack
    • SSH + RSYNC for bidirectional comms
    • No composer, etc.
    • Live server is with Ethernet Servers Ltd. Great VPSs. Great support too
    • And the only module installed is Tracy
    • VSCodium (VSCode without M$ nose buttin' in)
    • Front end is plain html/css/js.

     

    • Like 4
  5. When you first got your pi, did you install LAMP successfully? Is it debian based? Did apache serve a test php file from the url (or IP) correctly?

    If you need help with that, the pi forums should provide advice and tips to get the pi running correctly.

    Once your pi is running correctly, install PW as normal, fixing only the issues the installer presents to you. If there is sufficient resources, everything should function as intended.
     

  6. Your default apache config file (000-default.conf) should look similar to this...

    <VirtualHost *:80>
    	#ServerName www.example.com
    
    	ServerAdmin webmaster@localhost
    	DocumentRoot /var/www
    
    	<Directory /var/www/>
    		Options -Indexes +FollowSymLinks -MultiViews
    		AllowOverride All
    		Require all granted
    	</Directory>
    	
    	ErrorLog ${APACHE_LOG_DIR}/error.log
    	CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    </VirtualHost>

    The file you posted is missing elements and has elements assigned incorrectly.

    The DocumentRoot value should be the location where PW was installed (/var/www/html/pwire). Note there is no slash at the end.
    Your file is missing the <Directory> element. This value should be the location where PW was installed -- Including the trailing slash.

    Read through this... apache docs

     

    • Like 2
  7. As far as I know, Processwire has single-word tags only -- Unless someone else can jump in to explain how you can achieve multi-word tags.

    You do not need to restrict your tags to 'unique' items. Multiple items may have the same tag. As far as defining tags, that depends on your content. Education tag examples could be a subset of the course sub-category, eg, Category=Science, Subcategory="Astronomy", Tags="Telescopes","Planetary Nebula" (Notice the multiple word tag), and other astronomy related stuff.

    You can also define tags on the fly, rather than creating an initial listing.

    Hope this helps

    • Thanks 1
  8. @neophronYou already know this, I'm just thinkin' out loud.

    There are three ways to present a segmented data entry interface:

    1) A single form with all data fields displayed and editable at one time on the same page. Data is visually isolated usually by framing.
    2) A single form with multiple sections (ie, viewable tabs or steps). For example, step 1 could be personal info (name, address, etc.), step 2 could be product customization, and step 3 could be payment information. Having data segmented like this implies a sequential entry method where the user must progress in order.
    3) Separate forms for each section (obviously uniquely named) on the same page. Forms are again visually framed. This is random in that the user may complete none or more sections (forms) in any order. Personally, I don't care for this method. I only included it because it can be done (not that it should be done).

    You say the 'designer' wants the form displayed in the uikit switcher. This sounds to me like they want the second option as they believe the data to be segmented and sequential. I believe Ryan has (or is working on) the Pro Forms module which handles a sequential method rather than coding it yourself. I remember seeing that topic from Ryan but I do not remember the status. Maybe someone can educate me of that status.

    The first two presentation options are standard practice but depends entirely on the type of information you are trying to obtain and how you as the programmer want the user to perform. For example, an academic test application might be better suited for the sequential method. Since the user should be logged in prior to accessing the form(s) you already have the 'account' information to which the form data belongs. Saving the data from whichever presentation method is easily done to that account via ajax and/or a normal submit function.

    <Off Topic>
    I put designer in quotes above because it takes me back many years when I did instructional design work. It is not the designer's job to state how the interface should function. That is determined by you and the SME (subject matter expert). Now if that designer is also the SME, then you're good to go. Otherwise, you should provide the designer with the guidelines to create the necessary interface based off your needs analysis.
    </Off Topic>

    Anyway, I hope all this blabberin' helps you some way.

    • Like 2
  9. Probably the easiest method would be having their clients each with their own page, and each report is it's own child page. One template for the client pages and one template for the pdf pages. You can add the necessary fields to the pdf template to facilitate searching.

    Personally, I shy away from building intelligence into a naming conventions. You might have your client person(s) doing the uploading select the client then select the pdf file, and enter any other necessary data associated with that report. If your client already has a data system from which the reports are generated at a specific interval, then you might tap into that workflow.

    You might also consider using the created user ids for access control. Your client has clients (customers). Each customer would be a user in the system. That customer user id is used for their page and subsequent report page. Now you can use the logged in user to determine which pages are accessible.

    Just some thoughts out loud.

    • Like 4
  10. When pages are automatically sorted on a field, the move option is still enabled. Attempting to move one of those pages results in the following error:

    Your sort was not saved because these pages are automatically sorted by 'fieldname'

    PW .179
    PHP 7.4

    Personally, I think the move option should be removed when a field sort is defined, rather than just catching this exception.

  11. Make sure that your from address is the same as your user (login) address, and that you have the dns records defined as netcarver stated.

    On a similar note, I don't use mailinabox, rather an old squirrel mail install for linuxdude. It is a pita running your own mail server by keeping up with the spammers. And you will have spammers.

    • Like 1
  12. From your segment...

    $p->of(false); // output formatting should be off prior to editing page data.
    $p->singleImage->add($remoteUrl); //grab the image.
    $p->save();
    
    $p->of(false); // page save resets output formatting, so turn it off again.
    $image = $p->singleImage->first(); //load up image that was just saved.
    $newFilename = $parentName . '-' . $childName . '.' . strtolower($image->ext());
    
    $p->singleImage->rename($image, $newFilename);	
    $p->save(); //save changes to page.

     

×
×
  • Create New...