Newsletter Handler

Gesperrt
tradex1
Beiträge: 10
Registriert: Fr 11. Jun 2010, 21:39
Kontaktdaten:

Newsletter Handler

Beitrag von tradex1 » Sa 31. Jul 2010, 11:14

Hallo

Wo kann ich das Modul für den Newsletter + Handler downloaden?

danke

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Newsletter Handler

Beitrag von Oldperl » Sa 31. Jul 2010, 11:41

Hallo,

entweder aus einem installierten Demomandanten...

...oder direkt hier :arrow: http://www.conrepo.org/cms/front_conten ... dardmodule

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

tradex1
Beiträge: 10
Registriert: Fr 11. Jun 2010, 21:39
Kontaktdaten:

Re: Newsletter Handler

Beitrag von tradex1 » Sa 31. Jul 2010, 13:36

danke, leider erhalte ich jedoch bei input code einen fehler in zeile 26....

Code: Alles auswählen

<input>   cInclude('classes',  'class.htmlelements.php');
   cInclude('classes',  'contenido/class.clientslang.php');
   cInclude('classes',  'contenido/class.client.php');
   cInclude('classes',  'class.newsletter.groups.php');
   cInclude('classes',  'class.newsletter.recipients.php');
   cInclude('frontend', 'includes/class.input.helper.php'); # Note, this file is located in <client-path>/includes!

   // Initialisation
   $oClientLang = new cApiClientLanguage(false, $client, $lang);
   $oClient     = new cApiClient($client);

   /*
   *  Used variables:
   *  JoinSel:         Selection, which group will be joined (Default, Selected, User specified)
   *  JoinMultiple:    If JoinSel = UserSelected then: More than one group may be selected
   *  JoinGroups:      Selected group(s)
   *  JoinMessageType: Message type for new recipients: User select (user), text or html
   *  FrontendLink:    Link to Frontend Users enabled?
   *  FrontendConfirm: Confirmation of newsletter subscription means: Activate frontend account, nothing
   *  FrontendDel:     Cancellation of newsletter subscription means: Delete frontend account, Deactivate account, nothing
   *  SenderEMail:     Sender e-mail address
   *  HandlerID:       ID of handler article
   *  ChangeEMailID:   ID of change e-mail handler article
   */
   $aSettings   = array();
   $aSettings['JoinSel']         = $oClientLang->getProperty('newsletter', 'joinsel');
   $aSettings['JoinMultiple']    = $oClientLang->getProperty('newsletter', 'joinmultiple');
   $aSettings['JoinGroups']      = $oClientLang->getProperty('newsletter', 'joingroups');
   $aSettings['JoinMessageType'] = $oClientLang->getProperty('newsletter', 'joinmessagetype');
   $aSettings['FrontendLink']    = $oClient->getProperty('newsletter', 'frontendlink'); # Note: Stored for client, as frontendusers are language independent
   $aSettings['FrontendConfirm'] = "CMS_VALUE[5]";
   $aSettings['FrontendDel']     = "CMS_VALUE[6]";
   $aSettings['SenderEMail']     = $oClient->getProperty('global', 'sender-email'); # This one could be recycled by other modules...

   // Setting default values
   // If there is no selection option set or if no groups has been selected, activate option Default
   if ($aSettings['JoinSel'] == '' || $aSettings['JoinGroups'] == '') {
      $aSettings['JoinSel'] = "Default";
   }
   if ($aSettings['FrontendConfirm'] == '') {
      $aSettings['FrontendConfirm'] = "ActivateUser";
   }
   if ($aSettings['FrontendDel'] == '') {
      $aSettings['FrontendDel'] = "DeleteUser";
   }
   if (!is_numeric($_REQUEST['selHandlerCatArt'.$cnumber]) || $_REQUEST['selHandlerCatArt'.$cnumber] < 0) {
      $_REQUEST['selHandlerCatArt'.$cnumber] = 0;
   }

   // Saving changes, if any
   if ($_REQUEST['hidAction'.$cnumber] == 'save')
   {
      if ($_REQUEST['radJoin'.$cnumber] != '' && $_REQUEST['radJoin'.$cnumber] != $aSettings['JoinSel'])
      {
         $aSettings['JoinSel'] = $_REQUEST['radJoin'.$cnumber];
         $oClientLang->setProperty('newsletter', 'joinsel', $aSettings['JoinSel']);
      }
      if ($_REQUEST['ckbJoinMultiple'.$cnumber] != $aSettings['JoinMultiple'])
      {
         $aSettings['JoinMultiple'] = $_REQUEST['ckbJoinMultiple'.$cnumber];
         $oClientLang->setProperty('newsletter', 'joinmultiple', $aSettings['JoinMultiple']);
      }
      if ($_REQUEST['hidJoinGroups'.$cnumber] != '' && $_REQUEST['hidJoinGroups'.$cnumber] != $aSettings['JoinGroups'])
      {
         $aSettings['JoinGroups'] = $_REQUEST['hidJoinGroups'.$cnumber];
         $oClientLang->setProperty('newsletter', 'joingroups', $aSettings['JoinGroups']);
      }
      if ($_REQUEST['selMessageType'.$cnumber] != $aSettings['JoinMessageType'])
      {
         $aSettings['JoinMessageType'] = $_REQUEST['selMessageType'.$cnumber];
         $oClientLang->setProperty('newsletter', 'joinmessagetype', $aSettings['JoinMessageType']);
      }
      if ($_REQUEST['ckbFrontendLink'.$cnumber] != $aSettings['FrontendLink'])
      {
         $aSettings['FrontendLink'] = $_REQUEST['ckbFrontendLink'.$cnumber];
         $oClient->setProperty('newsletter', 'frontendlink', $aSettings['FrontendLink']);
      }

      if ($_REQUEST['ckbUpdateHandlerID'.$cnumber] == 'enabled')
      {
         // Trick: If UpdateHandlerID is enabled, save id as client setting
         $iHandlerCatArt = $_REQUEST['selHandlerCatArt'.$cnumber];
         $oClientLang->setProperty('newsletter', 'idcatart', $iHandlerCatArt);
      }
      
      if (isValidMail($_REQUEST['txtSender'.$cnumber]) && $_REQUEST['txtSender'.$cnumber] != $aSettings['SenderEMail'])
      {
         $aSettings['SenderEMail'] = $_REQUEST['txtSender'.$cnumber];
         $oClient->setProperty('global', 'sender-email', $aSettings['SenderEMail']);
      }
   }

   // Getting current handler article id
   $iHandlerCatArt = $oClientLang->getProperty('newsletter', 'idcatart');
   unset ($oClientLang);
   unset ($oClient);

   // Show options
   $oCfgTable = new UI_Config_Table;

   $oHidAction        = new cHTMLHiddenField('hidAction'.$cnumber, 'save');
   
   $oTxtSender = new cHTMLTextbox("txtSender".$cnumber, $aSettings['SenderEMail'], 30);

   $oCfgTable->setCell('sender', 0, mi18n("Sender e-mail:"));
   $oCfgTable->setCell('sender', 1, $oHidAction->render().$oTxtSender->render());

   $oSelHandlerCatArt = new cHTMLInputSelectElement('selHandlerCatArt'.$cnumber, 1, '', true);
   $oOption           = new cHTMLOptionElement(mi18n("- Please select -"), '');
   $oSelHandlerCatArt->addOptionElement(0, $oOption);
   $oSelHandlerCatArt->addCategories(0, true, false, false, true, true);
   $oSelHandlerCatArt->setDefault($iHandlerCatArt);

   $oCkbUpdate        = new cHTMLCheckbox('ckbUpdateHandlerID'.$cnumber, 'enabled');
   $oCkbUpdate->setEvent('click', 'if (this.checked) {document.forms[0].selHandlerCatArt'.$cnumber.'.disabled = false;} else {document.forms[0].selHandlerCatArt'.$cnumber.'.disabled = true;}');

   $oCfgTable->setCell('handler', 0, mi18n("Handler Article:"));
   $oCfgTable->setCell('handler', 1, $oSelHandlerCatArt->render()."\n&nbsp;".$oCkbUpdate->toHTML(false).mi18n("Update"));

   // Getting newsletter groups (if any)
   $oRcpGroups = new RecipientGroupCollection;
   $oRcpGroups->setWhere('idclient', $client);
   $oRcpGroups->setWhere('idlang',   $lang);
   $oRcpGroups->setWhere('defaultgroup', '0');
   $oRcpGroups->setOrder('defaultgroup DESC, groupname ASC');
   $oRcpGroups->query();
   
   // Join options
   // If newsletter groups are available, provide group options, otherwise show only
   // 'Default' option. This is necessary, as there may have been groups specified (and used)
   // but they have been deleted, later on.
   
   $oCfgTable->setCell('join_01', 0, mi18n("Join:"));
   
   if ($oRcpGroups->Count() == 0) {
      // No groups available, only default group possible
   
      $oRadJoinDefault = new cHTMLRadioButton ('radJoin'.$cnumber, 'Default', '', true);
      $oCfgTable->setCell('join_01', 1, $oRadJoinDefault->toHTML(false).mi18n("default group"));
   } else {
      // Groups available, show different group join options
   
      // Join default group only
      if ($aSettings['JoinSel'] == 'Default') {
         $oRadJoinDefault = new cHTMLRadioButton ('radJoin'.$cnumber, 'Default', '', true);
      } else {
         $oRadJoinDefault = new cHTMLRadioButton ('radJoin'.$cnumber, 'Default');
      }
      $oRadJoinDefault->setEvent('click', "document.forms[0].elements['ckbJoinMultiple".$cnumber."'].disabled = true; document.forms[0].selGroup".$cnumber.".disabled = true;");
      $oCfgTable->setCell('join_01', 1, $oRadJoinDefault->toHTML(false).mi18n("default group"));
      $oCfgTable->setRowBgColor('join_01', $cfg["color"]["table_dark"]);
   
      // Join admin selected groups automatically
      if ($aSettings['JoinSel'] == 'Selected') {
         $oRadJoinSelected = new cHTMLRadioButton ('radJoin'.$cnumber, 'Selected', '', true);
      } else {
         $oRadJoinSelected = new cHTMLRadioButton ('radJoin'.$cnumber, 'Selected');
      }
      $oRadJoinSelected->setEvent('click', "document.forms[0].elements['ckbJoinMultiple".$cnumber."'].disabled = false; document.forms[0].selGroup".$cnumber.".disabled = false;");
      $oCfgTable->setCell('join_02', 0, '');
      $oCfgTable->setCell('join_02', 1, $oRadJoinSelected->toHTML(false).mi18n("selected group(s)"));
      $oCfgTable->setRowBgColor('join_02', $cfg["color"]["table_dark"]);
   
      // Join the groups the user has selected (-> provide a list for the user), optionally, the user may select more than one group
      if ($aSettings['JoinSel'] == 'UserSelected')
      {
         $oRadJoinUserSel  = new cHTMLRadioButton ('radJoin'.$cnumber, 'UserSelected', '', true);
         $oCkbJoinMultiple = new cHTMLCheckbox ('ckbJoinMultiple'.$cnumber, 'enabled', '', $aSettings['JoinMultiple']);
      } else {
         $oRadJoinUserSel  = new cHTMLRadioButton ('radJoin'.$cnumber, 'UserSelected');
         $oCkbJoinMultiple = new cHTMLCheckbox ('ckbJoinMultiple'.$cnumber, 'enabled', '', false, true);
      }
      $oRadJoinUserSel->setEvent('click', "document.forms[0].elements['ckbJoinMultiple".$cnumber."'].disabled = false; document.forms[0].selGroup".$cnumber.".disabled = false;");
      $oCfgTable->setCell('join_03', 0, '');
      $oCfgTable->setCell('join_03', 1, $oRadJoinUserSel->toHTML(false).mi18n("group(s) as selected by user").'<br />'."\n".$oCkbJoinMultiple->toHTML(false).mi18n("Multiple group selection allowed"));
      $oCfgTable->setRowBgColor('join_03', $cfg["color"]["table_dark"]);
   
      $oCfgTable->setCell('groups', 0, mi18n("Select group(s):"));
   
      // Show groups
      // Trick: To save multiple selections in <select>-Element, add some JS which saves the
      // selection, comma separated in a hidden input field on change.
      $sSkript = '              <script type="text/javascript"><!--'."\n".
                 '                  function fncUpdateSel() {'."\n".
                 '                     var strSel = "";'."\n".
                 '                     for(i = 0; i < document.forms[0].selGroup'.$cnumber.'.length; i++) {'."\n".
                 '                        if(document.forms[0].selGroup'.$cnumber.'.options[i].selected == true) {'."\n".
                 '                           if (strSel != "")'."\n".
                 '                              strSel = strSel + ",";'."\n".
                 '                           strSel = strSel + document.forms[0].selGroup'.$cnumber.'.options[i].value;'."\n".
                 '                        }'."\n".
                 '                     }'."\n".
                 '                     document.forms[0].elements["hidJoinGroups'.$cnumber.'"].value = strSel;'."\n".
                 '                  }'."\n".
                 '                  //--></script>'."\n";

      if ($aSettings['JoinSel'] == 'Default') {
         $oSelGroup = new cHTMLSelectElement ('selGroup'.$cnumber, '', '', true);
      } else {
         $oSelGroup = new cHTMLSelectElement ('selGroup'.$cnumber, '');
      }
      $oSelGroup->setSize(5);
      $oSelGroup->setMultiselect();
      $oSelGroup->setEvent('change', "fncUpdateSel()");

      $aGroups = explode(',', $aSettings['JoinGroups']);
      while ($oRcpGroup = $oRcpGroups->next()) {
         $iID = $oRcpGroup->get('idnewsgroup');
         if (in_array ($iID, $aGroups)) {
            $oOption = new cHTMLOptionElement($oRcpGroup->get('groupname'), $iID, true);
         } else {
            $oOption = new cHTMLOptionElement($oRcpGroup->get('groupname'), $iID, false);
         }
         $oSelGroup->addOptionElement($iID, $oOption);
      }
   
      $oHidGroups = new cHTMLHiddenField ('hidJoinGroups'.$cnumber, $aSettings['JoinGroups']);
      $oCfgTable->setCell('groups', 1, $sSkript.$oSelGroup->render().$oHidGroups->render());
   }
   
   // Options: Message type (user [->selectbox], text or html)
   $oCfgTable->setCell('options_01', 0, mi18n("Options:"));

   $oSelMsgType = new cHTMLSelectElement ('selMessageType'.$cnumber);
   $oOption = new cHTMLOptionElement(mi18n("User selected"), "user");
   $oSelMsgType->addOptionElement(0, $oOption);
   $oOption = new cHTMLOptionElement(mi18n("Text only"), "text");
   $oSelMsgType->addOptionElement(1, $oOption);
   $oOption = new cHTMLOptionElement(mi18n("HTML and text"), "html");
   $oSelMsgType->addOptionElement(2, $oOption);
   $oSelMsgType->setDefault($aSettings['JoinMessageType']);

   $oCfgTable->setCell('options_01', 1, mi18n("Default message type:").'&nbsp;'.$oSelMsgType->render());

   // Frontend Link
   $oCfgTable->setCell('link_01', 0, mi18n("Frontend Users:"));
   $oCkbLink = new cHTMLCheckbox('ckbFrontendLink'.$cnumber, 'enabled', '', $aSettings['FrontendLink']);
   
   $sSkript = "if (this.checked) {
                  document.forms[0].elements['CMS_VAR[5]'][0].disabled = false;
                  document.forms[0].elements['CMS_VAR[5]'][1].disabled = false;
                  document.forms[0].elements['CMS_VAR[6]'][0].disabled = false;
                  document.forms[0].elements['CMS_VAR[6]'][1].disabled = false;
                  document.forms[0].elements['CMS_VAR[6]'][2].disabled = false;
               } else {
                  document.forms[0].elements['CMS_VAR[5]'][0].disabled = true;
                  document.forms[0].elements['CMS_VAR[5]'][1].disabled = true;
                  document.forms[0].elements['CMS_VAR[6]'][0].disabled = true;
                  document.forms[0].elements['CMS_VAR[6]'][1].disabled = true;
                  document.forms[0].elements['CMS_VAR[6]'][2].disabled = true;}";
   $oCkbLink->setEvent("click", $sSkript);

   $oCfgTable->setCell('link_01', 1, $oCkbLink->toHTML(false).mi18n("Activate Link"));
   $oCfgTable->setRowBgColor('link_01', $cfg["color"]["table_light"]);
   
   // Link: Activation options
   $oCfgTable->setCell('link_02', 0, '');
   
   switch ($aSettings['FrontendConfirm'])
   {
      case "Nothing":
         $oRadActivateUser    = new cHTMLRadioButton ("CMS_VAR[5]", "ActivateUser", "", false);
         $oRadActivateNothing = new cHTMLRadioButton ("CMS_VAR[5]", "Nothing",      "", true);
         break;
      default:
         $oRadActivateUser    = new cHTMLRadioButton ("CMS_VAR[5]", "ActivateUser", "", true);
         $oRadActivateNothing = new cHTMLRadioButton ("CMS_VAR[5]", "Nothing",      "", false);
   }

   switch ($aSettings['FrontendDel'])
   {
      case "DisableUser":
         $oRadDelDelete  = new cHTMLRadioButton ("CMS_VAR[6]", "DeleteUser",  "", false);
         $oRadDelDisable = new cHTMLRadioButton ("CMS_VAR[6]", "DisableUser", "", true);
         $oRadDelNothing = new cHTMLRadioButton ("CMS_VAR[6]", "Nothing",     "", false);
         break;
      case "Nothing":
         $oRadDelDelete  = new cHTMLRadioButton ("CMS_VAR[6]", "DeleteUser",  "", false);
         $oRadDelDisable = new cHTMLRadioButton ("CMS_VAR[6]", "DisableUser", "", false);
         $oRadDelNothing = new cHTMLRadioButton ("CMS_VAR[6]", "Nothing",     "", true);
         break;
      default:
         $oRadDelDelete  = new cHTMLRadioButton ("CMS_VAR[6]", "DeleteUser",  "", true);
         $oRadDelDisable = new cHTMLRadioButton ("CMS_VAR[6]", "DisableUser", "", false);
         $oRadDelNothing = new cHTMLRadioButton ("CMS_VAR[6]", "Nothing",     "", false);
   }

   if ($aSettings['FrontendLink'] == '')
   {
      $oRadActivateUser->setDisabled(true);
      $oRadActivateNothing->setDisabled(true);
      $oRadDelDelete->setDisabled(true);
      $oRadDelDisable->setDisabled(true);
      $oRadDelNothing->setDisabled(true);
   }
   $oCfgTable->setCell('link_02', 1, mi18n("Confirmation means:").'<br />'.
                                     $oRadActivateUser->toHTML(false).mi18n("Activate").
                                     $oRadActivateNothing->toHTML(false).mi18n("No changes"));
   $oCfgTable->setRowBgColor('link_02', $cfg["color"]["table_light"]);

   // Link: Cancellation options
   $oCfgTable->setCell('link_03', 0, '');

   $oCfgTable->setCell('link_03', 1, mi18n("Cancellation means:").'<br />'.
                                     $oRadDelDelete->toHTML(false).mi18n("Delete").
                                     $oRadDelDisable->toHTML(false).mi18n("Disable").
                                     $oRadDelNothing->toHTML(false).mi18n("No changes"));
   $oCfgTable->setRowBgColor('link_03', $cfg["color"]["table_light"]);

   $oCfgTable->render(true);

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Newsletter Handler

Beitrag von Oldperl » Sa 31. Jul 2010, 20:31

Hallo tradex1,

wenn du die in der zip-Datei enthaltene xml-Datei per Modulimport in dein vorhandenes Contenido holst sollte das Modul eigentlich einwandfrei funktionieren.
Der von dir gepostete Code sieht aber eher aus wie per Copy&Paste aus der xml-Datei herauskopiert. Diesen Code kannst du aber so weder im Input noch im Output direkt verwenden, da er für die xml-Datei speziell aufbereitet ist. Diese Aufbereitung wird beim Import wieder rückgängig gemacht.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

tradex1
Beiträge: 10
Registriert: Fr 11. Jun 2010, 21:39
Kontaktdaten:

Re: Newsletter Handler

Beitrag von tradex1 » So 1. Aug 2010, 10:00

super, wieder etwas gelernt... herzlichen dank.

gibt es die newsletter form auch zum downloaden?

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Newsletter Handler

Beitrag von Oldperl » Mo 2. Aug 2010, 13:41

Hallo tradex1,

gern geschehen. :-)

Ich schau mal, wenn ich es die Tage schaffe stelle ich mal noch die anderen Standardmodule der 4.8.12 online.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Gesperrt