Jump to content

louisstephens

Members
  • Content Count

    469
  • Joined

  • Last visited

Posts posted by louisstephens


  1. Thanks, I appreciate the help! I was thinking it was with ProcessWire and not with the module (thought it was best to keep this under the thread in one place). I wont pretend like I understand my "fix", but I did get it working by using 

    "img" => $offer->test_image->first->httpUrl,

     

    • Like 1

  2. I have been using this module for a bit now and I absolutely love it. However, I have hit a brick wall as of late when it comes to getting the path to an image. In my function getClient(), I have the following:

    array_push($response->offer, [
    	"client" => $offer->parent->parent->name,
    	"id" => $offer->id,
        "name" => $offer->name,
        "title" => $offer->title,
        "img" => $offer->test_image->httpUrl,
        "body" => $offer->body,
    ]);

    The image field is currently set to single value, but when I go to my endpoint, "img" is always null. When I change httpUrl to url, it only produces 

    "img":"\/site\/assets\/files\/1019\/"

    For the life of me I can not find what I am doing wrong. I checked the folder 1019 under files and my image is currently there. Any help on the matter would be appreciated


  3. 4 hours ago, AndZyk said:

    Thank you @louisstephens for the hint. I tried it out, but the link still gets stripped out, even with disabled ACF. Do you have configured extra allowed content?

    Maybe a RewriteRule in the .htaccess file would be the easiest solution. 🤔

    Ah, I did not have extra allowed content enabled, but it was a bit confusing for me as I had to add it to the toolbar and the icon appeared to be exactly like the current "url" icon. 


  4. Correct me if I am wrong, but  I don't think there is an "easy" way to change the icon itself, unless you went with custom js to find the icon and switch out the class names (font awesome) to something you desired. The only other option I see is to delve into custom theme building.

    So in your admin.php file (site/templates), add the following lines above the required controller:

    $modules->get('JqueryCore');
    $config->scripts->add($config->urls->templates . "scripts/your-js-file.js");

    Next, in your custom javascript file (which I would just put in your scripts folder), you could do something like:

    
    $(document).ready(function () {
        $('.uk-breadcrumb > li > a.pw-panel > i').removeClass('fa-tree').addClass('fa-telegram')
    });

    In the above code, it will change it to the telegram icon. Simply change out the icon to any fontawesome 4 (I believe) icon you wish. The only issue with this is you will briefly see the original tree icon until the document is ready. I could not get it working without the document.ready function. Perhaps someone knows a way around this.

    • Like 1

  5. The easiest way to change the logo is by going to (once logged in) Modules -> Core -> AdminThemeUiKit . You will see a section labeled Masthead + navigation. You should then be able to upload a new logo for the backend through the field provided. 

    As far as changing colors of the header, the easiest approach might be to follow what Jonathan Lahijani said here:

    On 12/28/2017 at 5:03 PM, Jonathan Lahijani said:

    Depending on how much you want to change, you can always do CSS overrides.  Put this line in /site/templates/admin.php, above the line that brings in controller.php:

    
    $config->styles->append($config->urls->templates."admin.css");

    Make a file in templates called "admin.css".

    Now let's say you want to change the navbar color:

    
    #pw-masthead {
      background: #666 !important;
    }

     

     

    • Like 3

  6. From the first picture you posted, if you click on "Bookmarks", you can select Pages from the tree to be the parent(s). Then, from there, you can go to "Add New >" and select the parent you want to add a new page to. From my understanding, this is a great shortcut feature if you are constantly going back and forth to the tree (though please correct me if I am wrong)


  7. In you home template, you could do something like:

    <?php
    	$newsArticles = $pages->find('template=your_news_templates');
    	foreach ($newsArticles as $newsArticle) {
    		echo "<a href=\"" . $newsArticle->url . "\">" . $newsArticle->title . "</a>";
    	}
    ?>

    This would output each article's title (as well as a url to the article). Obviously you can change the markup to whatever you would need.

    • Like 3

  8. I was really unsure of how to actually title this post, so I do apologize (if someone has a better idea, I will gladly edit it). I am using the profields: pagetable field to allow people to create their own "content" (copy, image, button, etc etc) and rearrange it. I also included a field called "column_size" using the RangeSlider set to (1-12).

    I guess I'll clarify a bit more on this. I am using flexbox where the "row" is <section></section> and the columns are <div class="column"></div> have given the "columns"  flex: 1 1 0; so no matter how many columns you have, the columns will automatically adjust for new content. Where my confusion is coming in: If a user has set up 3 copy items (with 12, 5, 7 respectfully for the column_size), how do I actually output this in my template? I was going to use a switch statement to handle the various items which I thought made it quite easy, but with closing sections and columns I have confused myself as I assume I need an if statement to check if the column size is > 12, or = 12 to determine the actual closing/opening of sections. I apologize if I have not made this very clear. I am a bit unsure how to word this let alone to go about this. 

    Im very appreciative of for any insight into this.

     

     


  9. Thanks zeka, I appreciate the help! I tried your suggestion really quickly this morning and the results are still pretty similar to what I was doing previously:

    [{"id":1644,"title":"ABC"},{"id":1648,"title":"DEF"},{"id":1652,"title":"GHI"},{"id":1686,"title":"JKL"}]

    However, I did end up "figuring it out" just now by changing my json_encode  to 

        echo json_encode(array("clients" => $clientArray));

    (Changed $clients_array to $clientsArray to avoid confusion with my field naming scheme.)


  10. 51 minutes ago, horst said:

    Yes, you will get it like with this code:

    
    $out = new \stdClass();
    $out->clients = [];
    foreach([0=>['id'=>'abc'], 1=>['id'=>'xyz']] as $client) {
        $out->clients[] = $client;
    }
    
    header('Content-Type: application/json');
    echo json_encode($out);

    see: https://www.php.net/manual/en/language.types.object.php#118679

     

    A question regarding the formatting here. I know in the example you are assigning the id's from what is typed in the foreach, however, how would you go about doing this programmatically as I am trying to get all the fields from each page? Sorry for my confusion here, just a lot to wrap my head around.


  11. I believe you are right. I was looking at a file and completely missed that the output was supposed to look like the following:

    {
    "clients": [
        {
            "id":1644,
            "code":"abc",
            "name":"Test Name",
            "associated_users":null,
            "url":"\/pw\/clients\/abc\/"
        },
        {
            "id": 1645,
            "code": "xyz",
            "name": "Test Name",
            "associated_users": null,
            "url": "\/pw\/clients\/xyz\/"
        },
    ]
    }

     

    • Like 1

  12. So I have been hard at work creating url segments for a template (api) and everything is working swimmingly in creating a simple end point for svelte.js. I have however, run into a few questions that I can wrap my head around.

    In my api template I have:

    if($input->urlSegment1 === 'clients') {
        header('Content-Type: application/json');
    
    
        $clients = $pages->find("template=clients");
        $client_array = array();
    
        foreach ($clients as $client) {
            $id = $client->id;
            $title = $client->title;
            $url = $client->url;
            $clientName = $client->client_name;
            $clientColor = $client->client_color->value;
            $assigned = $client->assigned_to->user_full_name;
    
    
            $client_array[] = array(
                'id' => $id,
                'code' => $title,
                'name' => $clientName,
                'associated_users' => $assigned,
                'url' => $url
            );
        }
    
    
        $client_json = json_encode($client_array, true);
        echo $client_json;
    }

    The output json from this is:

    [
        {
            "id":1644,
            "code":"abc",
            "name":"Test Name",
            "associated_users":null,
            "url":"\/pw\/clients\/abc\/"
        },
        {
            "id": 1645,
            "code": "xyz",
            "name": "Test Name",
            "associated_users": null,
            "url": "\/pw\/clients\/xyz\/"
        },
    ]

    I was curious is it possible to add in "clients" before this output json so it would appear as 

    clients: [
        {
            "id":1644,
            "code":"abc",
            "name":"Test Name",
            "associated_users":null,
            "url":"\/pw\/clients\/abc\/"
        },
        {
            "id": 1645,
            "code": "xyz",
            "name": "Test Name",
            "associated_users": null,
            "url": "\/pw\/clients\/xyz\/"
        },
    ]

    I was not really sure of how to tackle this in my php code, and have spent more time than I care to admit trying to figure it out. Another question I have is that "associated_users" is returning null, which in this instance is correct. It is a multi page field that is set to pull a custom name field from the users template, ie "Louis Stephens" would be associated with the first page. I understand that I need to use a foreach to get the correct data, but I was really unsure of how to place this inside an array, or update the array with the new data. Any help with any of this would greatly be appreciated.


  13. The easiest way I have done this is to paste the following in the home.php file (this can be found under site->templates). Once you have saved your change to the home template, visit your site's home page. Once you have visited the page after updating the template, you can remove the code from the template.

    $admin = $users->get('admin'); // or whatever your username is
    $admin->setAndSave('pass', 'yo123456'); //change the password to whatever you want it to be

     


  14. 16 hours ago, creativejay said:

    Thank you all for helping me with this! the culprit has been found. An “<a>” that should have been an “</a>” further up the page (which must have been there for months uncaught). Strange that today revealed symptoms of it for the first time! 

    I feel silly, but I’m glad that’s over!

     

    thanks again!

    This.. I run into little things like this all the time. It is one reason I moved away from outputting html in code/text blocks (unless it it really small), and moved to the php alternant syntax:

    <?php foreach ($services as $service) : ?>
        <div class="service">
            <h1>Sample Text</h1>
            <p><a href="<?php echo $service->url; ?>"><?php echo $service->title; ?></a></p>
        </div>
    <?php endforeach; ?>

    At least to me, it is much easier to find an issue since Visual Studio Code doesn't highlight the different syntax in code/text blocks (unless there is a way and I cant find it). I might start integrating twig into my templates as well. I do like the syntax, but I have not really tried it out much.

    • Like 1
×
×
  • Create New...