Jump to content

[Plugin] Client Notices (Set Text Or Html Notice For Each Client)


Recommended Posts

Hello All .

we bring free and exclusive content , this plugin will help admin to set a notice for each client (text or html contents).

this plugin was coded specially for some request by memebers in this forum .

with the plugin, you can :

- Add/Edit/Delete notice for each client
- Set notice in text or html format .
- Filter notice in the list notices page with Jquery .

TODO LIST :
- nothing at the moment .

Some screenshoot :

addmin list notices

 

client_notices_admin.png

Add/Edit admin page

 

client_notices_add.png


admin staff action in client profile

 

client_notices_action.png


notice in client side

 

client_notices_clientside.png

as always the installtion steps is :
1 - download the file from your account
2 - upload the client_notices folder inside plugin directory .
3 - goto plugins , and install client Notices .
4 - enjoy the free content .


Best regards

Link to post
Share on other sites

awesome +1 thank you so much

 

very happy to serve you .

 

Thanks mate going to try it, just to let you know I edited your post with the correct URL as it was linking to the admin tools, I was a bit confused and client_notices to replace the url folder and it worked so thought I'd save you some time haha :D

thanks for your correction . and waiting your feedbacks: and notes )

Link to post
Share on other sites

very happy to serve you .

 

thanks for your correction . and waiting your feedbacks: and notes )

 

I would like to see their client ID probably or client name if possible mate at the moment it shows the client ID as their database ID.

 

Also if possible have the notes display at the top of the other boxes It's a bit hard out of view for a notice?

 

As for the above here's our contribution for your module, feel free to add if you would like.

 

 

OLD design:

post-38-0-47830700-1414893746_thumb.png

 

NEW design:

 

post-38-0-28520200-1414893776_thumb.png

 

CODE to replace in: plugins/client_notices/views/default/admin_main.pdt

		<?php
		echo $this->Html->ifSet($message);
		
		$links = array();
		
		$this->Widget->clear();
		$this->Widget->setLinks($links);
		$this->Widget->create($this->_("AdminMain.index.boxtitle_notices", true), array('id'=>"admin_main"), $this->Html->ifSet($render_section, null));

		if ($this->Html->ifSet($notices, false) && ($num_notices = count($notices)) > 0) {
		?>
<div class="content_section">		
	<div class="inner" style="padding: 20px 20px 0px 20px;font-size: 14px;">
		<ul>
			<li><?php $this->_("AdminMain.add.search_for");?>: <input id="system-search" name="q" type="text" /></li>
		</ul>
	</div>
</div>

<div style="padding: 10px 20px 0px 20px;">
	<table class="table table-list-search">
            <thead>
                <tr class="heading_row">
                    <td><span><a href="<?php echo $this->Html->safe($this->base_uri . "plugin/client_notices/admin_main/index/?sort=id&order=" . ($sort == "id" ? $negate_order : $order));?>" class="ajax<?php echo $this->Html->safe($sort == "id" ? " " . $order : "");?>"><?php $this->_("AdminMain.index.heading_id");?></a></span></td>
                    <td><span><a href="<?php echo $this->Html->safe($this->base_uri . "plugin/client_notices/admin_main/index/?sort=client_id&order=" . ($sort == "client_id" ? $negate_order : $order));?>" class="ajax<?php echo $this->Html->safe($sort == "client_id" ? " " . $order : "");?>"><?php $this->_("AdminMain.index.heading_client_id");?></a></span></td>
                    <td><span><a href="<?php echo $this->Html->safe($this->base_uri . "plugin/client_notices/admin_main/index/?sort=notice_name&order=" . ($sort == "notice_name" ? $negate_order : $order));?>" class="ajax<?php echo $this->Html->safe($sort == "notice_name" ? " " . $order : "");?>"><?php $this->_("AdminMain.index.heading_name");?></a></span></td>
                    <td><span><a href="<?php echo $this->Html->safe($this->base_uri . "plugin/client_notices/admin_main/index/?sort=date_added&order=" . ($sort == "date_added" ? $negate_order : $order));?>" class="ajax<?php echo $this->Html->safe($sort == "date_added" ? " " . $order : "");?>"><?php $this->_("AdminMain.index.heading_date_added");?></a></span></td>
                    <td><?php $this->_("AdminMain.index.heading_options");?></td>
                </tr>
            </thead>
            <tbody>
            	<?php
				$i=0;
				foreach ($notices as $notice) {
				?>
				<tr class="<?php echo $this->Html->concat(" ", ($i++%2 == 1) ? "odd_row" : "");?>">
                    <td><?php $this->Html->_($notice->id);?></td>
                    <td><a href="<?php echo $this->Html->safe($this->base_uri . "clients/view/" . $this->Html->ifSet($notice->client_id));?>"><?php $this->Html->_($notice->client_id);?></a></td>
                    <td><?php $this->Html->_($notice->notice_name);?></td>
                    <td><?php echo $this->Date->cast($notice->date_added);?></td>
                    <td><a href="<?php echo $this->Html->safe($this->base_uri . "plugin/client_notices/admin_main/edit/" . $this->Html->ifSet($notice->id));?>"><?php $this->_("AdminMain.index.option_edit");?></a>,
						<?php
						$this->Form->create($this->base_uri . "plugin/client_notices/admin_main/delete/" . $this->Html->ifSet($notice->id));
						$this->Form->fieldHidden("id", $this->Html->ifSet($notice->id));
						?>
						<a href="<?php echo $this->Html->safe($this->base_uri . "plugin/client_notices/admin_main/delete/" . $this->Html->ifSet($notice->id));?>" class="manage" rel="<?php $this->_("AdminMain.modal.delete_notice");?>"><?php $this->_("AdminMain.index.option_delete");?></a>
						<?php
						$this->Form->end();
						?>
					</td>
                </tr>
            <?php } ?>
            </tbody>
        </table>
</div>
    	<?php }else{ ?>
<div class="content_section">       
    <div class="inner" style="padding: 20px 20px 0px 20px;margin-bottom:-12px;font-size: 12px;">
        <ul>
            <li><?php $this->_("AdminMain.index.no_results");?></li>
        </ul>
    </div>
</div>
		<?php
		}
		$this->Widget->end();
		?>
<script type="text/javascript">
	$(document).ready(function() {
		$('#admin_main a.manage[rel]').blestaModalConfirm({base_url: '<?php echo $this->Html->safe($this->base_uri);?>', close: '<?php $this->_("AppController.modal.text_close");?>', submit: true});
	});
</script>

<script type="text/javascript">
$(document).ready(function() {
    var activeSystemClass = $('.list-group-item.active');

    //something is entered in search form
    $('#system-search').keyup( function() {
       var that = this;
        // affect all table rows on in systems table
        var tableBody = $('.table-list-search tbody');
        var tableRowsClass = $('.table-list-search tbody tr');
        $('.search-sf').remove();
        tableRowsClass.each( function(i, val) {
        
            //Lower text for case insensitive
            var rowText = $(val).text().toLowerCase();
            var inputText = $(that).val().toLowerCase();

            if( rowText.indexOf( inputText ) == -1 )
            {
                //hide rows
                tableRowsClass.eq(i).hide();
                
            }
            else
            {
                $('.search-sf').remove();
                tableRowsClass.eq(i).show();
            }
        });
        //all tr elements are hidden
        if(tableRowsClass.children(':visible').length == 0)
        {
            tableBody.append('<tr class="search-sf"><td class="text-muted" colspan="6">No entries found.</td></tr>');
        }
    });
});	
</script>		

Table design thanks to Eric who did a module for me :)

 

 

New Client Side:

post-38-0-30325300-1414893888_thumb.png

 

CODE to replace in: plugins/client_notices/views/default/client_widget.pdt

<?php
if ($this->Html->Ifset($notice) ) {
	// Don't show this container when only rendering the widget section
	if (!$this->Html->ifSet($render_section) && !$this->Html->ifSet($is_ajax) && $this->Html->Ifset($notice) ) {
?>
<div class="col-md-12">
		<?php
		}
			echo "<div class='alert alert-danger' role='alert'><b>";
			echo  $this->Html->Ifset($notice->notice_name);
			echo "</b><br />";		
			echo  $this->Html->Ifset($notice->notice_body);
			echo "</div>";
			
// Don't show this container when only rendering the widget section
if (!$this->Html->ifSet($render_section) && !$this->Html->ifSet($is_ajax)) {
?>
</div>
<?php
	}
}	
?>
Link to post
Share on other sites
  • 7 months later...

Oh, so it's not a plugin issue, but an issue with Blesta not allowing the re-ordering. Thanks for the insight!

i have create a feature request , this a good option not only to re-order widget but also to re-order native widget like transaction , services , invoices ....

http://www.blesta.com/forums/index.php?/topic/4594-option-to-reorder-widgets-for-client-side/

Link to post
Share on other sites
  • 7 months later...

Thank you. 

Is there a way to write the notice at once and select it to be viewed to all clients?

 

you should then use the announcement plugin of naja7host .

 

I uploaded the plugin but could not see. It did not even appear with the boxes in the main screen, it came as one componenet in the top menu.

 

???

have you uploaded the folder to plugins directory ?

Link to post
Share on other sites

Worked. Thank you all. 

Prpb : ) it says for most function, this is not working on this blesta version something like this : ) My version was downloaded from the site latest.

 

Plus - I could not find the way to delete all invoices and make the billings zero dollar?

 

You can void the invoices (Edit > Void)

Link to post
Share on other sites
  • 10 months later...
7 hours ago, turner2f said:

REQUESTED FEATURE :

The ability to MANUALLY send an email to the client after a Notice is created or updated .

we will see this when we will update the plugin, but as the v4 has the built-in plugin for newsletter i think you can do this from admin side with the newsletter plugin .

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...