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
54  $buttonsTemplate = '';
55  if (Yii::app()->getModule('remember')->shareByMailEnabled) {
56  $buttonsTemplate = '{share_facebook}<br/>{share_mail}<br/>{remove}';
57  } else {
58  $buttonsTemplate = '{share_facebook}<br/>{remove}';
59  }
60 
61  $this->widget('zii.widgets.grid.CGridView', array(
62  'id' => 'share-remembered-pages',
63  'dataProvider' => $model->search($this->pageSize,$this->collection_id),
64  'filter' => $model,
65  'rowCssClassExpression' => '"page_$data->id"',
66  'columns' => array(
67  /*
68  array(
69  'header' => RememberModule::t('Select'),
70  'type' => 'raw',
71  'value' => 'CHtml::checkBox(get_class($data)."_selected_".$data->id, false, array("class" => "action-checkbox", "value" => $data->id))',
72  // Check box select/deselect all
73  'footer' => '<input type="checkbox" class="select-all">'
74  ),
75  **/
76  'id',
77  array(
78  'name' => 'title',
79  'htmlOptions' => array(
80  'class' => 'remember-page-title',
81  ),
82  // Dropdown global action
83  //'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')),
84  ),
85  array(
86  'name' => 'url',
87  'htmlOptions' => array('class' => 'remember-page-url')
88  ),
89  'page_id',
90  array(
91  'header' => RememberModule::t('created'),
92  'name' => 'created',
93  'sortable' => false,
94  'value' => 'Yii::app()->dateFormatter->formatDateTime($data->created)'
95  ),
96  // start additional fields
97  // they displaying in this way @$data->additional['key']
98  array(
99  'header' => RememberModule::t('Category'),
100  'sortable' => false,
101  'value' => '@$data->additional[0]'
102  ),
103  array(
104  'header' => RememberModule::t('Level'),
105  'sortable' => false,
106  'value' => '@$data->additional[1]'
107  ),
108  //end additional fields
109  array(
110  'class' => 'CButtonColumn',
111  'header' => RememberModule::t('Actions'),
112  'template' => $buttonsTemplate,
113  'buttons' => array(
114  'share_facebook' => array(
115  'label' => RememberModule::t('Share facebook'),
116  'url' => '$data->fbSharerUrl',
117  'options' => array('class' => 'share-fb-link')
118  //'imageUrl' => $this->module->getAssetsUrl() . '/user-rights.gif',
119  ),
120  'share_mail' => array(
121  'label' => RememberModule::t('Share mail'),
122  'url' => '"javascript:void(0)"',
123  //'imageUrl' => $this->module->getAssetsUrl() . '/user-rights.gif',
124  'options' => array('class' => 'share-mail-link')
125  ),
126  /*
127  'print' => array(
128  'label' => RememberModule::t('Print'),
129  'url' => '"javascript:void(0)"',
130  //'imageUrl' => $this->module->getAssetsUrl() . '/user-rights.gif',
131  'options' => array('class' => 'print-link')
132  ),
133  */
134  'remove' => array(
135  'label' => RememberModule::t('Delete'),
136  'url' => 'Yii::app()->createUrl("/remember/manage/deletePage",
137  array(
138  "id"=>$data->id,
139  "collection_id" => EncryptHelper::encrypt($data->collection_id)
140  )
141  )',
142  //'imageUrl' => $this->module->getAssetsUrl() . '/user-rights.gif',
143  ),
144  ),
145  //'htmlOptions' => array('style' => 'width:64px')
146  ),
147 
148 ))); ?>
149 <script>
150  $(function(){
151 
152  //attach handlers
153  $(document).on('click', '#share-remembered-pages .select-all', function(){
154  if($(this).attr('checked')){
155  $('.action-checkbox').attr('checked', true);
156  }else{
157  $('.action-checkbox').removeAttr('checked');
158  }
159  });
160  $(document).on('click','#share-remembered-pages .share-fb-link', function(){
161  var message = makeMessage($(this).closest('tr'));
162  shareFb(message);
163  });
164  $(document).on('click','#share-remembered-pages .share-mail-link', function(){
165  var message = makeMessage($(this).closest('tr'));
166  shareEmail(message);
167  });
168  $(document).on('click','#share-remembered-pages .print-link', function(){
169  var $message = $(this).closest('tr');
170  printLinks(makeMessage($message));
171  });
172  $(document).on('click','#share-remembered-pages [name="ok_button"]', function(){
173  var $checkboxes = $('.action-checkbox:checked');
174  if($checkboxes.length === 0){
175  return;
176  }
177  var action = $('#share-remembered-pages .action option:selected').val();
178  console.log(action);
179  if(action === 'fb_share'){
180  shareFb(makeMessageForChecked());
181  }else if(action === 'mail_share'){
182  shareEmail(makeMessageForChecked());
183  }else if(action === 'delete') {
184  deleteAll();
185  }else if(action === 'print') {
186  printLinks(makeMessageForChecked());
187  }
188  });
189  //helper fuctions
190  function makeMessage(el){
191  return $(el).find('.remember-page-url').text();
192  }
193  function makeMessageForChecked(){
194  var $checkboxes = $('.action-checkbox:checked');
195  var message = '';
196  $checkboxes.each(function(i, el){
197  message += makeMessage($(el).closest('tr'));
198  });
199  return message;
200  }
201  //sharing functions
202  function shareFb(message){
203  var obj = {
204  message: message,
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