Changeset 389

Show
Ignore:
Timestamp:
04/05/08 12:29:38 (5 years ago)
Author:
d0nut
Message:
  • different access levels
  • smart algorithm to select the best fitting page after deletion
Location:
buddyloo
Files:
10 modified

Legend:

Unmodified
Added
Removed
  • buddyloo/de-informal.xml

    r363 r389  
    6060Ihr {PAGE_TITLE} Team]]></item> 
    6161                <item name="wcf.buddyloo.invitation.register_invitation"><![CDATA[Wir nehmen Neumitglieder nur ÃŒber Einladungen auf. Daher mÃŒssen Sie auch diese E-Mail zur Registrierung verwenden.]]></item> 
    62                 <item name="wcf.buddyloo.social.title"><![CDATA[Buddyloo]]></item> 
    6362                 
    6463                <!-- gadgets //--> 
     
    7574                 
    7675                <!-- social pages //--> 
     76                <item name="wcf.buddyloo.social.title"><![CDATA[Buddyloo]]></item> 
    7777                <item name="wcf.buddyloo.social.column.add"><![CDATA[Spalte hinzufÃŒgen]]></item> 
    7878                <item name="wcf.buddyloo.social.page.add"><![CDATA[Page hinzufÃŒgen]]></item> 
    7979                <item name="wcf.buddyloo.social.page.rename"><![CDATA[Bitte gib den neuen Namen der Social Page ein]]></item> 
    8080                <item name="wcf.buddyloo.social.page.delete"><![CDATA[Willst du die Social Page wirklich löschen?]]></item> 
     81                 
     82                <item name="wcf.buddyloo.social.page.access.0"><![CDATA[Nur du hast Zugriff auf diese Seite.]]></item> 
     83                <item name="wcf.buddyloo.social.page.access.1"><![CDATA[Die Seite kann von allen Mitgliedern abgerufen werden (abhÀngig von der Admin-Konfiguration).]]></item> 
     84                <item name="wcf.buddyloo.social.page.access.2"><![CDATA[Nur deine Freunde haben Zugriff auf diese Seite.]]></item> 
    8185        </category> 
    8286        <category name="wcf.user.whitelist"> 
  • buddyloo/de.xml

    r363 r389  
    6060Ihr {PAGE_TITLE} Team]]></item> 
    6161                <item name="wcf.buddyloo.invitation.register_invitation"><![CDATA[Wir nehmen Neumitglieder nur ÃŒber Einladungen auf. Daher mÃŒssen Sie auch diese E-Mail zur Registrierung verwenden.]]></item> 
    62                 <item name="wcf.buddyloo.social.title"><![CDATA[Buddyloo]]></item> 
    6362                 
    6463                <!-- gadgets //--> 
     
    7574                 
    7675                <!-- social pages //--> 
     76                <item name="wcf.buddyloo.social.title"><![CDATA[Buddyloo]]></item> 
    7777                <item name="wcf.buddyloo.social.column.add"><![CDATA[Spalte hinzufÃŒgen]]></item> 
    7878                <item name="wcf.buddyloo.social.page.add"><![CDATA[Page hinzufÃŒgen]]></item> 
    7979                <item name="wcf.buddyloo.social.page.rename"><![CDATA[Bitte geben Sie den neuen Namen der Social Page ein]]></item> 
    8080                <item name="wcf.buddyloo.social.page.delete"><![CDATA[Wollen Sie Sie die Social Page wirklich löschen?]]></item> 
     81                 
     82                <item name="wcf.buddyloo.social.page.access.0"><![CDATA[Nur Sie haben Zugriff auf diese Seite.]]></item> 
     83                <item name="wcf.buddyloo.social.page.access.1"><![CDATA[Die Seite kann von allen Mitgliedern abgerufen werden (abhÀngig von der Admin-Konfiguration).]]></item> 
     84                <item name="wcf.buddyloo.social.page.access.2"><![CDATA[Nur Ihre Freunde haben Zugriff auf diese Seite.]]></item> 
    8185        </category> 
    8286        <category name="wcf.user.whitelist"> 
  • buddyloo/en.xml

    r369 r389  
    6060Your {PAGE_TITLE} Team]]></item> 
    6161                <item name="wcf.buddyloo.invitation.register_invitation"><![CDATA[New registrations are just possible after being invited from one of our members. That's why you have to use this email for your registration.]]></item> 
    62                 <item name="wcf.buddyloo.social.title"><![CDATA[Buddyloo]]></item> 
    6362                 
    6463                <!-- gadgets //--> 
     
    7574                 
    7675                <!-- social pages //--> 
     76                <item name="wcf.buddyloo.social.title"><![CDATA[Buddyloo]]></item> 
    7777                <item name="wcf.buddyloo.social.column.add"><![CDATA[Add column]]></item> 
    7878                <item name="wcf.buddyloo.social.page.add"><![CDATA[Add page]]></item> 
    7979                <item name="wcf.buddyloo.social.page.rename"><![CDATA[Please enter the new title of the social page]]></item> 
    8080                <item name="wcf.buddyloo.social.page.delete"><![CDATA[Do you really want to delete this social page?]]></item> 
     81                 
     82                <item name="wcf.buddyloo.social.page.access.0"><![CDATA[This social page is visible just for you.]]></item> 
     83                <item name="wcf.buddyloo.social.page.access.1"><![CDATA[This social page can be viewed from everyone (depending on the admin-configuration).]]></item> 
     84                <item name="wcf.buddyloo.social.page.access.2"><![CDATA[This social page is visible just for your friends.]]></item> 
    8185        </category> 
    8286        <category name="wcf.user.whitelist"> 
  • buddyloo/files/js/buddylooSocial.js

    r375 r389  
    11var buddylooConfigCache = new Array(); 
     2var buddylooAccessIcons = new Array('passwordS','packageTypePluginS','buddiesS'); 
     3 
     4onloadEvents.push(function() { 
     5        $('.mainHeadline > img').attr('src',RELATIVE_WCF_DIR + 'icon/buddylooSocialL.png'); 
     6        $('#socialLock').attr('src',RELATIVE_WCF_DIR+'icon/'+buddylooAccessIcons[locked]+'.png'); 
     7}); 
     8 
     9/** 
     10 * 
     11 */ 
     12function buddylooMessage(dest, text) { 
     13        var socialInfo = document.getElementById('social'+dest); 
     14        $(socialInfo).text(text); 
     15        socialInfo.parentNode.style.display = 'block'; 
     16} 
     17 
     18/** 
     19 * 
     20 */ 
     21function buddylooLockSocial(ob) { 
     22        locked = (locked+1) % 3; 
     23        $.post('index.php?action=BuddylooSocial&handle=lockSocial&userID='+userID+'&socialID='+socialID, 'locked='+locked, function(data) { 
     24                buddylooMessage('Info', language['wcf.buddyloo.social.page.access.'+locked]); 
     25                ob.src = RELATIVE_WCF_DIR+'icon/'+buddylooAccessIcons[locked]+'.png';    
     26        }); 
     27} 
    228 
    329/** 
     
    2046        if (input) { 
    2147                $.get('index.php?action=BuddylooSocial&handle=deleteSocial&userID='+userID+'&socialID='+socialID, function(data) { 
     48                        buddylooMessage('Info', language['wcf.buddyloo.social.page.delete.success']); 
    2249                        if(data == 0) { 
    23                                 location.href='index.php?page=User&userID='+userID; 
     50                                window.setTimeout("location.href='index.php?page=User&userID="+userID+"'", 1000); 
    2451                        } else { 
    25                                 location.href='index.php?page=Social&userID='+userID+'&socialID='+data; 
     52                                window.setTimeout("location.href='index.php?page=Social&userID="+userID+"&socialID="+data+"'", 1000); 
    2653                        } 
    2754                }); 
     
    128155function gadgetConfig(x) { 
    129156        // save config 
    130         //$.post('index.php?action=BuddylooSocial&handle=configGadget&userID='+userID+'&socialID='+socialID, 'gadgetID='+this.parentNode.parentNode.id); 
     157        $.post('index.php?action=BuddylooSocial&handle=configGadget&userID='+userID+'&socialID='+socialID, 'boxID='+this.parentNode.parentNode.id); 
    131158        x.slideToggle(750); 
    132159        return false; 
     
    138165var configContent = function(e) { 
    139166        var parent = this.parentNode.parentNode; 
    140         var gadgetID = parent.id.substr(3); 
     167        var boxID = parent.id.substr(3); 
    141168        var x = $(parent).find('.containerConfig'); 
    142169         
     
    144171                buddylooConfigCache[socialID] = new Array(); 
    145172        } 
    146         if(!buddylooConfigCache[socialID][gadgetID]) { 
     173        if(!buddylooConfigCache[socialID][boxID]) { 
    147174 
    148175                // load custom config 
    149                 $.post('index.php?action=BuddylooSocial&handle=configGadget&userID='+userID+'&socialID='+socialID, 'gadgetID='+this.parentNode.parentNode.id, function(data) { 
    150                         buddylooConfigCache 
    151                  
     176                $.post('index.php?action=BuddylooSocial&handle=configGadget&userID='+userID+'&socialID='+socialID, 'boxID='+this.parentNode.parentNode.id, function(data) { 
    152177                        var form = document.createElement('form'); 
     178                        form.onsubmit = function() {  
     179                                return gadgetConfig(x);  
     180                        } 
    153181 
    154182                        var submit = document.createElement('input'); 
     
    157185 
    158186                        form.appendChild(submit); 
    159                         form.onsubmit = function() {  
    160                                 return gadgetConfig(x);  
    161                         } 
    162187                 
    163                         buddylooConfigCache[socialID][gadgetID] = form; 
    164  
    165                         x.append(buddylooConfigCache[socialID][gadgetID]); 
     188                        buddylooConfigCache[socialID][boxID] = form; 
     189 
     190                        x.append(buddylooConfigCache[socialID][boxID]); 
    166191                }); 
    167192        } 
  • buddyloo/files/lib/action/BuddylooSocialAction.class.php

    r375 r389  
    115115                                WCF::getDB()->sendQuery($sql); 
    116116                                 
     117                                // finds the next best fitting socialpage to switch there 
     118                                $sql = 'SELECT          socialID, 
     119                                                        IF(icolumn>icolumnOld,icolumn-icolumnOld,icolumnOld-icolumn) AS diff  
     120                                        FROM            wcf'.WCF_N.'_buddyloo_user_to_social  
     121                                        JOIN            ( 
     122                                                SELECT          icolumn AS icolumnOld  
     123                                                FROM            wcf'.WCF_N.'_buddyloo_user_to_social 
     124                                                WHERE           socialID ='.$this->socialID.' 
     125                                                        ) X  
     126                                        WHERE           userID='.$this->userID.'  
     127                                        ORDER BY        diff ASC, 
     128                                                        icolumn DESC  
     129                                        LIMIT           1  
     130                                        OFFSET          1'; 
     131                                $row = WCF::getDB()->getFirstRow($sql); 
     132                                echo $row ? $row['socialID'] : 0; 
     133                                 
    117134                                $sql = 'DELETE FROM     wcf'.WCF_N.'_buddyloo_user_to_social 
    118135                                        WHERE           socialID = '.$this->socialID; 
    119136                                WCF::getDB()->sendQuery($sql); 
    120137                                 
     138                                // finds the first socialpage to set as new default 
    121139                                $sql = 'SELECT          IF(ISNULL(MIN(socialID)),0,MIN(socialID)) AS socialID 
    122140                                        FROM            wcf'.WCF_N.'_buddyloo_user_to_social 
     
    130148                                        'socialID'=>$this->socialID 
    131149                                )); 
    132  
    133                                 echo $this->socialID; 
    134150                        break; 
    135151                         
     
    188204                                } 
    189205                        break; 
     206                        case 'configGadget': 
     207                                 
     208                        break; 
    190209                } 
    191210                 
  • buddyloo/files/lib/data/user/BuddylooSocialData.class.php

    r373 r389  
    2020        public $socialID; 
    2121        public $columns=array(); 
     22        public $access = 0; 
    2223         
    2324        /** 
     
    3132                $this->socialID = $socialID; 
    3233                 
    33                 $this->fetchColumns(); 
     34                $sql = 'SELECT          s.socialAccess 
     35                        FROM            wcf'.WCF_N.'_buddyloo_user_to_social  us 
     36                        NATURAL JOIN    wcf'.WCF_N.'_buddyloo_social s 
     37                        WHERE           su.socialID = '.$this->socialID.' 
     38                        AND             su.userID = '.$this->userID; 
     39                $row = WCF::getDB()->getFirstRow($sql); 
     40                $this->access = $row['socialAccess']; 
     41                 
     42                $access = $this->getPermission(); 
     43                if(!$access) $access = $this->access>0 && $this->isFriend($this->userID); 
     44                if(!$access) $access = $this->access>1 && WCF::getUser()->getPermission('user.profile.canSocial'); 
     45                if($access) $this->fetchColumns(); 
    3446        } 
    3547         
     
    4052                return $this->columns; 
    4153        } 
    42          
     54 
     55        /** 
     56         * 
     57         */ 
     58        public function getPermission() { 
     59                return WCF::getUser()->userID == $this->userID || $this->userID === null; 
     60        } 
     61 
     62        /** 
     63         * checks if i am in the friendlist of the user 
     64         */ 
     65        protected function isFriend($userID) { 
     66                WCF::getCache()->addResource('buddyloo.friendships',  
     67                        WCF_DIR.'cache/cache.buddyloo.friendships.php', 
     68                        WCF_DIR.'lib/system/cache/CacheBuilderBuddylooFriendships.class.php'); 
     69                         
     70                $cache = WCF::getCache()->get('buddyloo.friendships'); 
     71                return isset($cache[$userID]) && in_array(WCF::getUser()->userID, $cache[$userID]); 
     72        } 
     73 
    4374        /** 
    4475         * demo 
    4576         */ 
    46         public function fetchColumns() { 
     77        protected function fetchColumns() { 
    4778                $sql = 'SELECT          (        
    4879                                                SELECT  COUNT(*)  
     
    98129                } 
    99130        } 
    100          
    101         /** 
    102          * 
    103          */ 
    104         public function getPermission() { 
    105                 return WCF::getUser()->userID == $this->userID || $this->userID === null; 
    106         } 
    107131} 
    108132?> 
  • buddyloo/fr.xml

    r365 r389  
    6060L’équipe {PAGE_TITLE}]]></item> 
    6161                <item name="wcf.buddyloo.invitation.register_invitation"><![CDATA[De nouvelles inscriptions ne sont possible seulement aprÚs avoir été invité par un de nos membres. C’est la raison pour laquelle vous devez utiliser cette e-mail pour votre inscription.]]></item> 
    62                 <item name="wcf.buddyloo.social.title"><![CDATA[Buddyloo]]></item> 
    6362                 
    6463                <!-- gadgets //--> 
     
    7574                 
    7675                <!-- social pages //--> 
     76                <item name="wcf.buddyloo.social.title"><![CDATA[Buddyloo]]></item> 
    7777                <item name="wcf.buddyloo.social.column.add"><![CDATA[Ajout de colonnes]]></item> 
    7878                <item name="wcf.buddyloo.social.page.add"><![CDATA[Ajout de pages]]></item> 
    7979                <item name="wcf.buddyloo.social.page.rename"><![CDATA[Veuillez entrer le nouveau nom de la page sociale]]></item> 
    8080                <item name="wcf.buddyloo.social.page.delete"><![CDATA[Êtes-vous sûr de vouloir supprimer cette page sociale ?]]></item> 
     81                 
     82                <item name="wcf.buddyloo.social.page.access.0"><![CDATA[TODO]]></item> 
     83                <item name="wcf.buddyloo.social.page.access.1"><![CDATA[TODO]]></item> 
     84                <item name="wcf.buddyloo.social.page.access.2"><![CDATA[TODO]]></item> 
    8185        </category> 
    8286        <category name="wcf.user.whitelist"> 
  • buddyloo/install.sql

    r376 r389  
    1919  socialID int(10) unsigned NOT NULL auto_increment, 
    2020  socialTitle varchar(80) NOT NULL, 
     21  socialAccess tinyint(1) NOT NULL DEFAULT 0, 
    2122  PRIMARY KEY (socialID) 
    2223) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
  • buddyloo/templates/buddylooSocial.tpl

    r375 r389  
    1313                var userID = {$user->userID}; 
    1414                var language = new Array(); 
     15                var locked = {$social->socialAccess}; 
     16                language['wcf.buddyloo.social.page.access.0'] = '{lang}wcf.buddyloo.social.page.access.0{/lang}'; 
     17                language['wcf.buddyloo.social.page.access.1'] = '{lang}wcf.buddyloo.social.page.access.1{/lang}'; 
     18                language['wcf.buddyloo.social.page.access.2'] = '{lang}wcf.buddyloo.social.page.access.2{/lang}'; 
    1519                language['wcf.buddyloo.social.page.rename'] = '{lang}wcf.buddyloo.social.page.rename{/lang}'; 
    1620                language['wcf.buddyloo.social.page.delete'] = '{lang}wcf.buddyloo.social.page.delete{/lang}'; 
     21                language['wcf.buddyloo.social.page.delete.success'] = '{lang}wcf.buddyloo.social.page.delete.success{/lang}'; 
    1722                language['wcf.global.button.submit'] = '{lang}wcf.global.button.submit{/lang}'; 
    1823                //]]> 
     
    4247                        <p class="warning">{lang}wcf.user.profile.protectedProfile{/lang}</p> 
    4348                {/if} 
    44                 <p class="info" id="socialInfo" style="display:none"></p> 
    45                 <p class="error" id="socialError" style="display:none"></p> 
    46                 <p class="warning" id="socialWarning" style="display:none"></p> 
     49                <div class="info" style="display:none"><a class="close" onclick="this.parentNode.style.display='none'"> 
     50                        <img alt="" src="{@RELATIVE_WCF_DIR}icon/pmCancelS.png"/></a> 
     51                        <p id="socialInfo"></p> 
     52                </div> 
     53                <div class="error" id="socialError" style="display:none"></div> 
     54                <div class="warning" id="socialWarning" style="display:none"></div> 
     55                {if $social->getPermission()} 
    4756                <div style="float:right;"> 
    48                         <a href="#" onclick="return buddylooEditSocial('{$socialTitle}')"><img src="wcf/icon/editS.png"/></a> 
    49                         <a href="#" onclick="return buddylooDeleteSocial()"><img src="wcf/icon/deleteS.png"/></a> 
     57                        <a href="#" onclick="this.blur();return buddylooLockSocial(this.firstChild)"><img src="{@RELATIVE_WCF_DIR}icon/passwordS.png" alt="" id="socialLock"/></a> 
     58                        <a href="#" onclick="this.blur();return buddylooEditSocial('{$socialTitle}')"><img src="{@RELATIVE_WCF_DIR}icon/editS.png" alt=""/></a> 
     59                        <a href="#" onclick="this.blur();return buddylooDeleteSocial()"><img src="{@RELATIVE_WCF_DIR}icon/deleteS.png" alt=""/></a> 
    5060                </div> 
     61                {/if} 
    5162        {/capture} 
    5263         
     
    6677                                                {/if} 
    6778                                                <div class="containerIcon"><img alt="" src="{@$box.img}"/></div> 
    68                                                 <h3 class="containerContent">{@$box.title}</h3> 
     79                                                <h3 class="containerContent">{lang}{@$box.title}{/lang}</h3> 
    6980                                        </div> 
    7081                                        <div class="containerHead containerConfig"></div> 
  • buddyloo/update.sql

    r376 r389  
    44  socialID int(10) unsigned NOT NULL auto_increment, 
    55  socialTitle varchar(80) NOT NULL, 
     6  socialAccess tinyint(1) NOT NULL DEFAULT 0, 
    67  PRIMARY KEY (socialID) 
    78) ENGINE=MyISAM DEFAULT CHARSET=utf8;