Gentics Portal.Node PHP API
 All Classes Namespaces Functions Variables Pages
_shareRemembered.php
1 <?php
2 $request = Yii::app()->request;
3 ?>
4 <div class="success-message" style="display:none; background-color:green;">
5  <?php echo RememberModule::t('Successfull done!') ?>
6 </div>
7 <div class="mail-form">
8  <?php $form = $this->beginWidget('CActiveForm', array(
9  'id' => 'share-by-mail-form',
10  'action' => Yii::app()->createUrl('/remember/manage/shareByMail'),
11  'enableAjaxValidation' => true,
12  'htmlOptions' => array(
13  'style' => 'display:none'
14  ),
15  'clientOptions' => array(
16  'validateOnSubmit' => true,
17  'validateOnChange' => false,
18  'afterValidate' => 'js:
19  function (form, data, hasError){
20  console.log(form, data, hasError);
21  if(!hasError){
22  $(form).find("input[type=text], textarea").each(function(i, input){$(input).val("");});
23  successMessage();
24  }
25  return false;
26  }
27  '
28  ),
29  )) ?>
30  <?php echo $form->errorSummary($mailForm) ?>
31 
32  <div class="row">
33  <?php echo $form->labelEx($mailForm, 'name'); ?>
34  <?php echo $form->textField($mailForm, 'name') ?>
35  <?php echo $form->error($mailForm, 'name'); ?>
36  </div>
37  <div class="row">
38  <?php echo $form->labelEx($mailForm, 'email'); ?>
39  <?php echo $form->textField($mailForm, 'email') ?>
40  <?php echo $form->error($mailForm, 'email'); ?>
41  </div>
42  <div class="row">
43  <?php echo $form->labelEx($mailForm, 'description'); ?>
44  <?php echo $form->textArea($mailForm, 'description') ?>
45  <?php echo $form->error($mailForm, 'description'); ?>
46  </div>
47  <?php echo $form->hiddenField($mailForm, 'links') ?>
48  <div class="row">
49  <?php echo CHtml::submitButton(RememberModule::t("Submit")); ?>
50  </div>
51  <?php $this->endWidget() ?>
52 </div>
53 <?php $this->widget('zii.widgets.grid.CGridView', array(
54  'id' => 'share-remembered-pages',
55  'dataProvider' => $model->search($this->pageSize,$this->collection_id),
56  'filter' => $model,
57  'rowCssClassExpression' => '"page_$data->id"',
58  'columns' => array(
59  /*
60  array(
61  'header' => RememberModule::t('Select'),
62  'type' => 'raw',
63  'value' => 'CHtml::checkBox(get_class($data)."_selected_".$data->id, false, array("class" => "action-checkbox", "value" => $data->id))',
64  // Check box select/deselect all
65  'footer' => '<input type="checkbox" class="select-all">'
66  ),
67  **/
68  'id',
69  array(
70  'name' => 'title',
71  'htmlOptions' => array(
72  'class' => 'remember-page-title',
73  ),
74  // Dropdown global action
75  //'footer' => CHtml::dropDownList('action','',array('mail_share' => RememberModule::t('Share mail'), 'print' => RememberModule::t('Print'), 'delete' => RememberModule::t('Delete')), array('class' => 'action')) . CHtml::button(RememberModule::t('Ok'), array('name' => 'ok_button')),
76  ),
77  array(
78  'name' => 'url',
79  'htmlOptions' => array('class' => 'remember-page-url')
80  ),
81  'page_id',
82  array(
83  'header' => RememberModule::t('created'),
84  'name' => 'created',
85  'sortable' => false,
86  'value' => 'Yii::app()->dateFormatter->formatDateTime($data->created)'
87  ),
88  // start additional fields
89  // they displaying in this way @$data->additional['key']
90  array(
91  'header' => RememberModule::t('Category'),
92  'sortable' => false,
93  'value' => '@$data->additional[0]'
94  ),
95  array(
96  'header' => RememberModule::t('Level'),
97  'sortable' => false,
98  'value' => '@$data->additional[1]'
99  ),
100  //end additional fields
101  array(
102  'class' => 'CButtonColumn',
103  'header' => RememberModule::t('Actions'),
104  'template' => '{share_facebook}
105  <br/>{share_mail}'.
106  //<br/>{print}
107  '<br/>{remove}',
108  'buttons' => array(
109  'share_facebook' => array(
110  'label' => RememberModule::t('Share facebook'),
111  'url' => '$data->fbSharerUrl',
112  'options' => array('class' => 'share-fb-link')
113  //'imageUrl' => $this->module->getAssetsUrl() . '/user-rights.gif',
114  ),
115  'share_mail' => array(
116  'label' => RememberModule::t('Share mail'),
117  'url' => '"javascript:void(0)"',
118  //'imageUrl' => $this->module->getAssetsUrl() . '/user-rights.gif',
119  'options' => array('class' => 'share-mail-link')
120  ),
121  /*
122  'print' => array(
123  'label' => RememberModule::t('Print'),
124  'url' => '"javascript:void(0)"',
125  //'imageUrl' => $this->module->getAssetsUrl() . '/user-rights.gif',
126  'options' => array('class' => 'print-link')
127  ),
128  */
129  'remove' => array(
130  'label' => RememberModule::t('Delete'),
131  'url' => 'Yii::app()->createUrl("/remember/manage/deletePage",
132  array(
133  "id"=>$data->id,
134  "collection_id" => EncryptHelper::encrypt($data->collection_id)
135  )
136  )',
137  //'imageUrl' => $this->module->getAssetsUrl() . '/user-rights.gif',
138  ),
139  ),
140  //'htmlOptions' => array('style' => 'width:64px')
141  ),
142 
143 ))); ?>
144 <script>
145  $(function(){
146 
147  //attach handlers
148  $(document).on('click', '#share-remembered-pages .select-all', function(){
149  if($(this).attr('checked')){
150  $('.action-checkbox').attr('checked', true);
151  }else{
152  $('.action-checkbox').removeAttr('checked');
153  }
154  });
155  $(document).on('click','#share-remembered-pages .share-fb-link', function(){
156  var message = makeMessage($(this).closest('tr'));
157  shareFb(message);
158  });
159  $(document).on('click','#share-remembered-pages .share-mail-link', function(){
160  var message = makeMessage($(this).closest('tr'));
161  shareEmail(message);
162  });
163  $(document).on('click','#share-remembered-pages .print-link', function(){
164  var $message = $(this).closest('tr');
165  printLinks(makeMessage($message));
166  });
167  $(document).on('click','#share-remembered-pages [name="ok_button"]', function(){
168  var $checkboxes = $('.action-checkbox:checked');
169  if($checkboxes.length === 0){
170  return;
171  }
172  var action = $('#share-remembered-pages .action option:selected').val();
173  console.log(action);
174  if(action === 'fb_share'){
175  shareFb(makeMessageForChecked());
176  }else if(action === 'mail_share'){
177  shareEmail(makeMessageForChecked());
178  }else if(action === 'delete') {
179  deleteAll();
180  }else if(action === 'print') {
181  printLinks(makeMessageForChecked());
182  }
183  });
184  //helper fuctions
185  function makeMessage(el){
186  return $(el).find('.remember-page-title').text() + ': ' + $(el).find('.remember-page-url').text() + '\n';
187  }
188  function makeMessageForChecked(){
189  var $checkboxes = $('.action-checkbox:checked');
190  var message = '';
191  $checkboxes.each(function(i, el){
192  message += makeMessage($(el).closest('tr'));
193  });
194  return message;
195  }
196  //sharing functions
197  function shareFb(message){
198  var obj = {
199  message: message,
200  //link: 'https://developers.facebook.com/docs/reference/dialogs/',
201  //picture: 'http://fbrell.com/f8.jpg',
202  //name: 'Remember pages name',
203  //caption: 'Remember pages caption',
204  //description: 'Remember pages description'
205  };
206  console.log(obj);
207  var postFbMessage = function(){
208  FB.api('/me/feed','post',obj, function(response){
209  console.log(response);
210  successMessage();
211  });
212  }
213  FB.getLoginStatus(function(response) {
214  console.log(response);
215  if (response.status === 'connected') {
216  // connected
217  postFbMessage();
218  } else if (response.status === 'not_authorized') {
219  // not_authorized
220  fbLogin(postFbMessage);
221  } else {
222  // not_logged_in
223  fbLogin(postFbMessage);
224  }
225  });
226  }
227  function shareEmail(message){
228  var $form = $('#share-by-mail-form');
229  $form.show();
230  $form.find('[name="ShareMailForm[links]"]').val(message);
231  }
232  function deleteAll(){
233  if(!confirm('Are you sure you want to delete this items?')) return false;
234  var th=this;
235  var checkboxes = $('#share-remembered-pages .action-checkbox:checked');
236  var pageIds = [];
237  checkboxes.each(function(i, el){
238  pageIds.push($(el).val());
239  });
240  console.log(pageIds);
241  var csrf = <?php echo CJSON::encode($request->enableCsrfValidation ? array($request->csrfTokenName => $request->getCsrfToken()) : array())?>;
242 
243  $.get('<?php echo Yii::app()->createUrl('/remember/manage/deletePage')?>',
244  $.extend({}, {id : pageIds.join(',')}, csrf),
245  function(data){
246  data = jQuery.parseJSON(data);
247  if(data.status != undefined && data.status == 'success'){
248  pageIds.forEach(function(element, index, array){
249  $('.page_'+element).remove();
250  });
251  }
252  }
253  );
254  return false;
255  }
256 
257  function printLinks(links)
258  {
259  var disp_setting="toolbar=yes,location=no,directories=yes,menubar=yes,";
260  disp_setting+="scrollbars=yes,width=650, height=600, left=100, top=25";
261  var content_vlue = links;
262 
263  var docprint=window.open("","",disp_setting);
264  //docprint.document.open();
265  $(docprint.document.body).append(links);
266  $(docprint.document.body).append($('<input>').attr({'type':'button', 'value': 'Print', 'onclick': 'window.print()'}));
267  //docprint.document.write(content_vlue);
268  //docprint.document.write($('<input>').attr({'type':'button'}).html());
269  //docprint.document.close();
270  docprint.focus();
271  }
272  });
273  function successMessage(){
274  $('#share-by-mail-form').hide();
275  var $success = $('.success-message');
276  $success.show();
277  setTimeout(function (){$success.hide()}, 3000);
278  }
279 </script>
280 <script>
281  //facebook initialisation
282  /*
283  window.fbAsyncInit = function() {
284  FB.init({
285  appId : '<?php echo Yii::app()->getModule('remember')->facebookApplicationId ?>', // App ID
286  status : true, // check login status
287  cookie : true, // enable cookies to allow the server to access the session
288  xfbml : true // parse XFBML
289  });
290  };
291 
292  // Load the SDK Asynchronously
293  (function(d){
294  var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
295  if (d.getElementById(id)) {return;}
296  js = d.createElement('script'); js.id = id; js.async = true;
297  js.src = "//connect.facebook.net/en_US/all.js";
298  ref.parentNode.insertBefore(js, ref);
299  }(document));
300  */
301 
302  function fbLogin(callback) {
303  FB.login(function(response) {
304  console.log('login', response);
305  if (response.authResponse) {
306  // connected
307  callback();
308  } else {
309  // cancelled
310  }
311  },{scope: 'publish_stream'});
312  }
313 </script>
314