Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

NewsBot

Moderator
  • Postów

    8 852
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    24

Treść opublikowana przez NewsBot

  1. Hi, This is Ahmed Zayed. A Highly resourceful, innovative, and competent PHP developer with extensive experience in the layout, design and coding of web apps. Specifically in PHP format. Possessing considerable knowledge of the development of web applications and scripts using PHP programming language and MySQL & SQL Server databases. Experienced in developing applications and solutions for a wide range of corporate, charity and public sector clients and having the enthusiasm and ambition to complete projects to the highest standard. I have assisted in running a large number of websites in the same time period. On a side to my development work, we have also assisted a number of first-time community owners with forum upgrades and conversions. I'm basically based in Egypt. I've been working in web development for about 21 years, working with Wordpress, Joomla , Nuke & forums software. I have been in Invision community development industry for about 15 years since IPB 2.3. If you're looking for a long-term development/support plan, contact me to discuss my offerings. Wyświetl pełną treść wpisu
  2. I work as professional graphic & web designer since 1999. I can help with visual customizations of Invision Community websites, especially in regards to the Pages app. Typical jobs include: —Setting up custom landing/home pages —Setting up Pages databases and creating custom templates for them —Improving the overall look of a community (colors, fonts, images) Wyświetl pełną treść wpisu
  3. Administrating IPS software in communities since 2003. Developing IPS software since 2013. Ads Everywhere, Spacious ACP, Kitchen Sink, Search Stuff, and lots lots more... Although I have a wide array of applications and plugins available publicly, the vast majority of my work has been private applications. Server management and ongoing support/on-call retainers welcomed. Prefer ongoing organization/business orientated work; open and willing for one-offs for small communities. I get it - my communities are small too (and in some cases private) and so funding might not be there. If I have the time and you have at least some money we can probably work something out. Just don't ask the moon for cut-rate pricing. Located in Sunny/Snowy/Hot/Cold Central Wisconsin, USA Wyświetl pełną treść wpisu
  4. ☀️ Welcome to this week's Invision Community Insight! ☀️ Thank you for checking out this quick, round up post. It's hard to believe that we are entering into a new month! I hope your week as been pleasant. Current Happenings The August release will be ready late this month just as it was in July. A few of you have asked about Spam improvements. Those will be in an upcoming release ... August if we are lucky. 🤞 Our update is brief again this week. Version 5 has been a big focus for our team so far this year and we are making great progress! We will begin sharing non-technical updates soon and once we do, I'll share those here. Changelog With that said, changes for version 4 are limited for now but for those that like to see what we are up to line by line, here is the changelog for the week for version 4. Wyświetl pełną treść wpisu
  5. For a small fee, I will design and make a template for you in accordance with the latest standards. I also make plugins and configure the website along with data conversion. I invite you to cooperation. Wyświetl pełną treść wpisu
  6. I've been working in the computer industry for over 20 years, doing everything from Technical Writing, Project & Product Management, Web Development, and Programming. Over the years I have worked extensively with a variety of database platforms and on multiple Operating Systems. Despite the "Project Manager" title, I've always been hands-on, often taking on some of the more complex projects. In early 2010, I made the jump to full-fledged Developer, working in Java and C#.NET. I got involved with IPB in 2007, when a friend of mine started his own site and was looking for a programmer. I taught myself PHP and IPB, and by early 2008 I started accepting requests for custom modifications. In May 2010, I quit my job and moved full-time into consulting, with the majority of my work being IPB-related. All of my clients are long-term projects, some of them corporate. My clients look to me not only for development, but because I also have product management experience, I can often help them take a basic, not yet fully-formed idea and expand it into an actual application or project. I have worked with every IPS component available, as well as developed many custom applications. Please note that: I do not do any design work. Please do not contact me for theme design, I am not the right resource for that. I am primarily interested in long-term, ongoing projects. I prefer to build a relationship with my clients, rather than delivering a single plugin and walking away. Wyświetl pełną treść wpisu
  7. Looking for a skilled IPS4/5 software developer with expertise in creating application add-ons? Search no more! I'm an experienced programmer who excels in IPS4/5 development, delivering top-notch solutions. Whether it's custom add-ons or solving software challenges, I've got you covered. I stay updated with the latest IPS4/5 advancements, ensuring I provide innovative solutions. With attention to detail and precision, I craft tailor-made solutions that exceed expectations. My track record includes successful IPS4 projects and meeting deadlines. Let's work together to bring your IPS4/5 projects to life! *IPS5 isn’t available yet. Wyświetl pełną treść wpisu
  8. In our previous blog entry, we described the UI Extension and its overall capabilities. Today, we'll talk about how to use this new tool to extend content forms and menus. Form Fields A popular modification request is to add fields to a Content Item, such as a Topic. All UI extension classes contain the following methods: formElements Returns an array of form elements that will be added to the form. Note: Unlike other UI Extension methods, the first parameter of this method can be NULL, if you are creating a new item. formPostSave Allows you to process the fields that were added in the formElements method. Note that this method is triggered after the form is saved. Note: This method has the same function as the ContentListener method onCreateOrEdit, but we've added support for it here as well to avoid the creation of multiple classes, and to keep related code in the same place. Element Placement By default, all new form elements will be inserted at the end of the form. However, there are times that you may want to insert your fields into specific positions within the form. You can use the new FormAbstract::setPosition() method to specify where the element should be inserted. Let's look at an example. public function formElements( ?BaseItem $item, ?Model $container ): array { return [ 'my_new_field' => new Text( 'my_new_field', $item ? $item->new_field : null, true ) ]; } The above will append a Text field called "my_new_field" at the end of the Topic form. public function formElements( ?BaseItem $item, ?Model $container ): array { $field = new Text( 'my_new_field', null, true ); return [ 'my_new_field' => $field->setPosition( Topic::$formLangPrefix . 'tags', Topic::$formLangPrefix . 'mainTab' ) ]; } By using setPosition, I've placed the new field after the "tags" field, on the main tab in the form. Extending Content Menus In this blog entry, we introduced our new approach to building menus. With UI extensions, you can add your own items to Item and Comment menus using the following methods: UIItem::menuItems UIComment::menuItems We will discuss nodes and their menus in a future blog entry. Extending Item Badges Similarly, you can use the UI Extension to add badges to the item header. The UIItem::badges() method returns an array of badges and/or icons to be appended to the badge display. This concludes our discussion of UI Extension features related to Items and Comments. In our next blog entry, we'll discuss Nodes and what additional methods are available. Wyświetl pełną treść wpisu
  9. Astroside A new template for your forum straight from the author. It has many built-in functions. It will be enhanced with additional features in future updates. ( IPS version 4.7 ) !! TESTED ON 4.7.12 !! ----- DEMO ----- u: demo p: demo The template requires the Better Statistics plugin, I recommend installing this plugin before installing the template. Wyświetl pełną treść wpisu
  10. Only a little over a week into our development tools announcements, and there is already lots of buzz about our new UI Extensions. The UI Extensions handle a variety of functionality, and we will discuss them all in detail, over the course of multiple blog entries. For today, we'll start with an introduction and an overview of some of the basic usage. Features and Functionality UI Extensions are extensions to a single content class - Nodes, Items, Comments, or Reviews. With a UI Extension, you can: Add custom CSS classes and data attributes Add options to content menus Add badges to content item headers Add fields to content forms ACP-related functionality (for nodes) And a couple of other small things that we'll cover here. Setup The Application Developer Center has 4 new options in the Extensions tab: UIComment UIItem UINode UIReview To add a UI extension, simply create a class under the appropriate extension type. Note: We are working on improving this process, however, those changes will likely be introduced at a later date. The default extension file will be generated in the appropriate directory within your application's extensions folder. All UI Extensions are abstracted, so if you omit a method from your class, or if new methods are introduced later on, your extension will not throw an error. All UI Extension methods receive the object as the first parameter. UI Extensions for... UI The idea for UI Extensions was born when we were reviewing the most common third-party development hooks. With the removal of theme hooks, we needed a way for developers to add custom CSS and attributes to areas such as topic rows, the author panel, among others. Even with the theme hooks in v4, the way to accomplish this was less than ideal. Adding a CSS class typically required at least 2 hooks per template - one to determine the correct class (usually based on custom logic) and one to insert the class as a variable. It was tedious and finicky at best. All UI Extensions include the following methods: css Returns an array of CSS classes that will be applied to the object dataAttributes Returns an array of data attributes (as "key=value", "key=value") that will be applied to the object To insert those values into the appropriate location, our templates now contain the following syntax: {$object->ui( 'css' )} and {$object->ui( 'dataAttributes' )} Let's examine the Content::ui() method (identical to Model::ui().) public function ui( string $method, ?array $payload=array(), bool $returnAsArray=false, string $separator = " " ) : array|string The ui method accepts 4 arguments: the method name, an optional payload (determined based on the method being called), the option to return as an array (vs a string), and an optional separator (when data is returned as a string). The defaults for this method were set for the simplest, shortest syntax within the templates, as seen above. You may also see syntax like this: foreach( $this->ui( 'menuItems', array(), TRUE ) as $key => $link ) { $links[$key] = $link; } As you can see, in this case the ui method will return the results as an array. Class-Specific Methods Some of our extensions include methods that are applicable only to objects of that type. UIItem::sidebar() Returns HTML that will be included in the contextual sidebar when viewing the item UIComment::authorPanel() Returns HTML to be inserted into the author panel of a post Note: All methods in the UIComment extension are also available in UIReview. We hope this entry gave you a glimpse into what will be available with this new tool, and a better understanding of the direction we are taking with our toolkit. We will discuss the other features of this tool in upcoming blog entries. Wyświetl pełną treść wpisu
  11. Action and Moderation Menus can be one of the most tedious development tasks, while also being critical to user experience. For example, we may add support for pinning/unpinning content, then we need to remember to include the ability to pin/unpin that content in all the HTML templates. 3rd party developers add screens inside their applications, and then they need to add a link to the User Menu to make that accessible. With Invision Community 4, this would require a template hook targeting fairly complex classes and children that was susceptible to structural changes to templates between versions. In Invision Community 5, we have made significant changes to menu creation in order to streamline the process, and also to allow 3rd party developers better accessibility. New Helper Classes Menus are now built using helper classes, rather than relying on lengthy HTML templates. A menu is created by initializing a new Menu object. $menu = new Menu( 'AccountMenu' ); We can then add elements to the menu. $menu->addTitleField( 'menu_content' ); $menu->add( new Link( $member->url(), 'menu_profile', icon:'fa-solid fa-user' ) ); $menu->addSeparator(); $menu->add( new Link( Url::internal( "app=core&module=system&controller=markread", "front", "mark_site_as_read" )->csrf()->addRef( Request::i()->url() ), 'mark_site_read', dataAttributes: [ 'data-action' => 'markSiteRead', 'data-controller' => 'core.front.core.markRead' ], icon: 'fa-solid fa-eye' ) ); The most common menu element is the Link. This will generate the appropriate <li> element within the menu. You can define the URL, CSS class (default is ipsMenu_item), data attributes, icon, title, among other properties. Titles and Separators are added using the Menu::addTitleField() and Menu::addSeparator() methods respectively. You can also insert custom HTML into the menu using the Menu::addHtml() method. In your HTML template, you would then simply display the menu object as a string. {{if $menu->hasContent()}} {$menu|raw} {{endif}} The menu templates will include the link that opens the menu, as well as the menu itself. You'll notice that the above contains a call to the hasContent() method. This method will check if the menu object has any elements inside; if a user does not have permission to any of the elements, nothing will be displayed. Content Menus Almost all content items and comments (and reviews) require some kind of menu for moderation. Previously, this meant creating large chunks of redundant HTML code throughout the codebase. We've implemented \IPS\Content\Item::menu() and \IPS\Content\Comment::menu() to build these menus in a central location. The new methods include checks for whether a feature is in use and whether the user has permission to perform this action. Example: if( IPS::classUsesTrait( $this, 'IPS\Content\Pinnable' ) AND $this->canPin( $member ) ) { $links['pin'] = new ContentMenuLink( $this->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'pin' ) ), 'pin' ); } Now, the HTML template simply contains: {$entry->menu()|raw} (Note: Yes, these content menus can be extended using... you guessed it. UI Extensions.) Other Menus We have also migrated the following menus to the new structure: User Menu Mobile Menu Create Menu Badges Another area with redundant HTML was our content badges. For example, pinned topics will display an icon on both the topic list and the topic header. We have created helper classes for badges and badge icons to centralize this logic. Within the new Item::badges() method, we build an array of icons that will be shown. if( IPS::classUsesTrait( $this, Featurable::class ) AND $this->isFeatured() ) { $return['featured'] = new Icon( Badge::BADGE_POSITIVE, 'fa-solid fa-star', Member::loggedIn()->language()->addToStack( 'featured' ) ); } The above generates a badge icon with the badge type ipsBadge--positive (constants have been declared for all common types, but any class can be used), the star icon, and the "featured" language string as the tooltip. In our template HTML, we now have <div class='ipsBadges'> {{foreach $entry->badges() as $badge}}{$badge|raw}{{endforeach}} </div> UserMenu Extension Now that we've moved the menus into the codebase and out of the templates, we needed a way to allow 3rd party developers to insert their own menu items. We've introduced a new extension called UserMenu. The UserMenu extension contains the following methods: accountMenu This method allows you to add menu elements to the user menu. The method includes a parameter to allow you to add elements in one of 3 places within the menu: content, settings, or logout. mobileMenu Allows you to add elements to the mobile navigation menu. All elements are inserted before the "sign out" option. createMenu Replaces the CreateMenu extension, which has been deprecated. accountSettingsLinks Allows you to add links to the inner sidebar in the Account Settings overview tab (under the link for Notification Settings). Note: No, this does not add tabs to the Account Settings page, but fear not, that's coming. (Not in the UI Extension.) userNav This method will insert HTML in the user bar, to the left of the Create Menu. mobileNav Similar to the userNav method, but inserts HTML into the mobile navigation header. What do you think of our changes to the Menus? Let us know in the comments below. Wyświetl pełną treść wpisu
  12. Description: This app adds a new tab containing all the members marked as spammers at your forum, to the Member Management section in the Moderator CP. It might come in handy especially if you have a large number of spammers, as it allows the admins to get some help in managing them from their staff members without giving them access to the Admin Panel. Permissions: This app adds a new permission tab to the Moderator Permissions. To select the staff members that you want to manage spammers at the Moderator CP, set the permission: Can manage spammers from the Mod CP? to Yes and save the changes. Settings: From the app 's settings page you can decide if you want to keep the names of spamemrs IP Address Check: Moderators with permissions to view the ip addresses can check the ip addresses of the spammers. Quick Moderation: There are 2 quick multiple selection checkboxes that will allow for a quick unflag and/or deletion of all selected spammers. Settings: You can either delete or hide the content of members marked as spammer when they are deleted. Moderator Log: Whenever a member is approved the action will be logged in the Moderator Log page. Compatibility: The app is compatible with php 8.x and the current latest version of Ipb. Wyświetl pełną treść wpisu
  13. Has anybody experienced problems with push notifications on phones? We set the manifest configuration in System > Settings > Web app > Manifest. This os our current situation: Push notifications (and red badge) are working fine in Desktop PWAs (chrome & edge), but not working at all in phones (iOS or Android), not notifications arriving nor badge showing. We tested on several devices without luck. Attached our current support stats: Thanks! Wyświetl pełną treść wpisu
  14. ☀️ Welcome to this week's Invision Community Insight! ☀️ Thank you for checking out this quick, round up post. I hope you have had a lovely week. Super brief update today - Version 5 has been a big focus for our team so far this year and we are making great progress! We will begin sharing non-technical updates soon and once we do, I'll share those here. Changelog With that said, changes for version 4 are limited for now but for those that like to see what we are up to line by line, here is the changelog for the week for version 4. Wyświetl pełną treść wpisu
  15. S3 Workbench Modifications for improved Non-Amazon S3 service providers, primarily allowing for the correct download of attachments. Tested with Backblaze, Wasabi, DigitalOcean, iDrive, etc. Service Status ACP Dashboard widgets for Backblaze, DigitalOcean, and Wasabi. Features: New Region Setting on S3 Storage Settings: If you are using DigitalOcean or Wasabi, toggle the new "set region" to on, enter the region you have set for your service, and save. If Invision Community displays a pop-up modal warning you that you are making changes and it will init a move process, choose the option stating I already moved the files. All this setting does is aid the IPS S3 code which defaults to Amazon us-east when manipulating S3 things when it cannot detect a region correctly and it needs to. If you get to choose and set a region for your bucket, enter it here. This is NOT essential, but it could be useful if you run into problems (provides certainty) ACP Dashboard S3 Service Monitors: Available for Wasabi, DigitalOcean, and Backblaze. If there is a hew and cry for Vultr that can be written out as well for a future release. Widgets display region and occasionally other service-specific availability (online, impacted, down) along with service alert and status text if available. For services with a history function regarding alerts you can configure how much is available in the widgets in the S3WB settings. In most cases the alert text is truncated with an expand toggle to see the rest if needed. See screenshots. Service logo buttons link to what would be your account or configuration pages at those services. Willing to add additional monitors for other providers if there is a need, and they have something to get on that front (iDrive does not). Code-modifications allowing the correct downloading by users of attachments and Invision Community Downloads file downloads: Simplified header information mostly that fixes signature-breaking structure present in the code. Note that this is due to alternative S3 providers not being fully compatible with the Amazon S3 calls IPS makes by default. For Backblaze I bypass all S3 calls and instead utilize the Backblaze API system for users to download files. Why: The built-in S3 file handling system in Invision Community is programmed exclusively for Amazon S3. Although this DOES work with alternative S3 providers, most of these providers have quirks of their own that break full compatibility with what IPS provides. I wrote out a hacky plugin years ago to address some of these things, and even though that plugin still works, the actual plugin itself has not been updated for at least three years and was last flagged as compatible for the 4.5x series of Invision Community. We're a long ways away from that time, both with the IPS codebase and the S3 providers themselves. As we near the end of the 4x line I thought it was time to get this all updated to something relatively stable and more useful than a plugin. Testing: I have tested Backblaze, Wasabi, DigitalOcean, iDrive, and many months ago Vultr (don't hold me to that one but it should be fine I just don't want to spool off $5 to test again). I should point out I DO NOT make any alterations to the majority of the internal IPS S3 code. Testing included: Moved attachment files from LOCAL STORAGE to ALT S3 SERVICE Uploaded a new attachment Tested downloads worked correctly for attachments Moved attachment files from ALT S3 SERVICE to LOCAL STORAGE. Confirmed files were intact and downloadable. Moved Invision Community Downloads files from LOCAL STORAGE to ALT S3 SERVICE Uploaded a new Downloads file Tested downloads worked correctly for Downloads files Moved Invision Community Downloads files from ALT S3 SERVICE to LOCAL STORAGE. Confirmed files were intact and downloadable. Testing was usually with 10 to 20 meg PDF files and of course the usual embedded images in posts (which are attachments) and all that was fine. If you are uploading massively large files it is up to you to investigate whether 100meg or larger files work correctly with these systems. This gets into the realm of chunking and your PHP/Apache settings and the like. Not my problem and again, nothing to do with this code at all. You'll also notice I did not test with CDNs. Way beyond the scope of any of this. The old plugin is working fine with CDNs if configured properly; you'll have no problems here either - again, the PRIMARY FUNCTION of this is to patch up attachment downloads and makes ZERO CHANGES to anything else. Lastly, transfers from one S3 service directly to another S3 service were not tested. Again, nothing to do with this application. If you have a substantial amount of files to move between storage areas, you are better off using other dedicated tools and then flagging changes to the file systems as "I already moved the files". Backups are not a bad idea either... The above testing was two fold: to confirm the attachments downloaded with S3 Workbench, and that the services nominally worked. The former was required; the latter is a courtesy. Requires: cURL for Backblaze (The 4x line still allows fallback to sockets if you are running an ancient cURL version but the BB stuff is all cURL). You should know how to configure S3 in general. Invision Community Downloads: If you are using this IPS application, S3WB does work with those file downloads (and unlike the old plugin, no longer FORCES them to be public files) but if you absolutely MUST have those file downloads hyper-secure be sure to use your local storage or Amazon S3. If one of these downloads files is an mp3 it will probably load in the browser directly when the user grabs the "file". This is all the same code to generate the URL as regular file attachments, but it appears to be more sensitive for "reasons" that are not worth my time to track down. I know why this happens, but am unsure of its uneven application (pdf's I would image would load in the browser the same but they do not). Additionally, some of the alternative S3 services out there do not do file-level access control (e.g. flagging a file as private) but instead do public and private buckets. I'd just point out that once a user has one of your "private" files, they can do what they want with it - including sharing it it, re-uploading it, and so on, and there is nothing you can do about it. So, again, if this is all hyper-important to you, just use local storage or Amazon S3, otherwise, really, it's fine. Service Specific Notes: All the settings below, including bucket names, are obscured/fake but the configurations are correct. Provided as a courtesy. Backblaze: S3WB uses the Backblaze API, not the Backblaze S3 implementation, for file downloads. An additional change is dropping the amz-acl header calls when a url is doing something with Backblaze - the service DOES NOT WANT ANYTHING TO DO WITH acl. Works great and I'd be fine recommending these guys. Crazy stock price crash since listing, though prob a buy opportunity right now (Mid-June 2023 it's $4 something, it's $5 something mid-July, expected to do $9 something). bucketname: muhbucket endpoint: s3.us-west-004.backblazeb2.com access key: abcdefg1234 secret key: abcdefg1234 set region ON region: us-west-004 Wasabi: Solid. The one that started all this mess years and years ago. I'd consider them stable now; in the 99%'s, which is kilometers (or miles if you prefer) better than they were on initial launch. I still have a $5/month account with them (that's how early I got on the wagon). bucketname: muhbucket endpoint: s3.us-east-1.wasabisys.com access key: abcdefg1234 secret key: abcdefg1234 set region ON region: us-east-1 NOTE: If you are using s3.wasabisys.com for endpoint (which is us-east-1) you can skip the region setting here. DigitalOcean: Not the cheapest but some of you may be in the ecosystem so here you go. bucketname: muhbucket endpoint: nyc3.digitaloceanspaces.com access key: abcdefg1234 secret key: abcdefg1234 set region ON region: nyc3 iDrive: Fairly new on the S3 front, as a company, around a LONG time. Very inexpensive. Configure as follows: In your iDrive control panel, create a public bucket. Then click the gear icon on the bucket in the bucket lists. Get the PUBLIC BUCKET URL! - it will end with .dev - the part WITHOUT your bucket name is what you want So if it is this: https://muhbucket.w8q1.c19.e2-1.dev Then when setting up the new storage setting this is what you use: Bucket name: muhbucket endpoint: w8q1.c19.e2-1.dev access key : whatever secret key: whatever set region: OFF With ALL of these services, please test. Your circumstances may differ and I offer no guarantees. Just covering my support posterior. Again, this a couple tweaks to allow attachment downloads mainly for alternative S3 providers. The core S3 code is still all IPS. S3 Compatible Downloads Users: If you are happy with the old plugin, it still works - and remains working on many sites. The code here is a little bit better plus the Backblaze API downloads bypassing any S3 problems that might be encountered. The last version of S3CD was for 4.5 so if you are looking to get something more up-to-date, support the dev, and get some nifty support widgets, purchase this, make sure it is enabled, and then delete the old S3 Compatible Downloads plugin. That's it for upgrading. I should also note that I do not have any of the hacky http insecure link support here, and those of you with wacky bucket names need to get religion on that if you want to upgrade to this. I'll listen, but support on those fronts is gonna be a wait-and-see-maybe sort of thing. It's not 2015 anymore. Status Widgets Heads-Up: These are scraping, parsing things - either the status pages themselves or the, becoming more rare by the day, rss/xml feeds. If any of these guys changes things up, the widgets will break (or rather the underlying data will). I'll be patching these things as they occur. This app has actually been running on my sites for a couple years now and I think I've had maybe one or two breaks in that time across all the widgets. Invision Community 5: No idea at this stage what is and will not be possible here. Many of my applications will be new purchases for the new framework but THIS ONE, if it is upgradable to the 5.x line, will just get the 5.x version added in to the mix for this purchase. Wyświetl pełną treść wpisu
  16. Description: This app adds a new tab containing all the validating members at your forum, at the Member Management section in the Moderator CP. It might come in handy especially if you have a large number of validating members, as it allows the admins to get some help in managing them from their staff members without giving them access to the Admin Panel. Permissions: This app adds a new permission tab to the Moderator Permissions. To select the staff members that you want to manage the validating members at the Moderator CP, set the permission: Can the approve members from the Mod CP? to Yes and save the changes. Options: Moderators have 4 options when managing the validating members. Those who are allowed to edit members will be able to edit them, those with permissions to view the ip addresses can check the ips of the validating members, they can resend the validation email and of course they can approve them as well. Multiple Approval Selection: There is also a quick multiple approval selection checkbox that will allow for a quick approval of all selected members. Moderator Log: Whenever a member is approved the action will be logged in the Moderator Log page. Compatibility: The app is compatible with php 8.x and the current latest version of Ipb. Wyświetl pełną treść wpisu
  17. I'm very excited to be posting my first blog entry for IPS, and thrilled that this is what I get to post. When we started planning the new development tools for v5, we looked at existing resources - from the marketplace, from some contributors, and from our own managed clients - and asked, what is it that developers find themselves doing the most often? Matt’s previous blog entry gave a brief summary of some of those functions. Today’s blog entry is going to focus on one of our powerful new tools, Listeners. One common reason for a code hook was to execute custom code when a specific action occurs. For example, when a topic is created, or when a new reply is posted. Listeners allow you to execute your code at key points in the workflow, without the worry of finding exactly the right hook location. Here is an excerpt from the BlogComment listener in our Cloud application: Creating Listeners Let’s start with the application’s Developer Center. We’ve added a new tab for Listeners. This tab lists all your existing listeners, as well as the class on which it is listening. You’ll notice that each listener can only observe a single class. While this may seem slightly tedious, the idea here was that as a developer, you should be conscious of what class you are working with. It also eliminates the need to check what type of object is being passed preventing accidents and unintended consequences when missing class checks. When you add a listener, there are several listener types available. We will discuss each one in detail. Content Listener This listener is fired on an Item or Comment (or Review) class. When adding a Content Listener, you must specify the class you are observing. When you hit Save, there is a validation check in place to ensure that the class exists, and that it is a valid class for the selected listener type. Content Listeners have the following methods available. All methods are included in the default listener file that is generated. onLoad Triggered when an object is loaded (in Content::constructFromData) NOTE: Be careful! This event could be fired at unexpected times. If you’re executing code here, you may want to check the dispatcher instance to verify that your code is running where you expect. onBeforeCreateOrEdit Fired when a form is submitted, before it is saved. This is the equivalent of Item::processBeforeCreate and Item::processBeforeEdit. This method includes a parameter to indicate whether this is a create or edit. onCreateOrEdit Fired after a form is saved. This is the equivalent of Item::processAfterCreate and Item::processAfterEdit. This method includes a parameter to indicate whether this is a create or edit. onDelete Fired after an object is deleted. onStatusChange Fired when any moderation action occurs. For example, when an item is pinned/unpinned, locked/unlocked. The moderation action is passed as a parameter so that your code can take that into account. onMerge Triggered AFTER an item is merged. onItemView Triggered when an item is viewed and the view count is incremented. Invoice Listener An Invoice listener is fired only on the \IPS\nexus\Invoice class. This listener does not require you to specify a class to extend. The Invoice listener includes a single method, onStatusChange. This is fired when the invoice is saved and the status changes (pending/paid/expired/canceled). Member Listener The Member listener will be familiar to many of you. We have taken the MemberSync extension and moved it in its entirety to a listener, as it was a better fit for this structure. All the previous methods that were available are still available here. We have also added the following new methods: onJoinClub Fired when a member joins a club. If approval is required, this is fired after they are approved. onLeaveClub Fired when a member leaves or is removed from a club. onEventRsvp Fired when a member responds to an event. The response is included as a parameter to this method. Commerce Package Listener The Commerce Package listener is fired on any implementation of \IPS\nexus\Invoice\Item. You must specify the class that you are observing. The methods are the same as those that are available in an item extension. onCancel onChange onDelete onExpireWarning onExpire onInvoiceCancel onPaid onPurchaseGenerated onReactivate onRenew onTransfer onUnpaid Some Technical Notes All listener files will be generated in a “listeners” directory within your application. Your application’s data directory will include a listeners.json file that defines all your listeners. The json file is automatically generated when you add/remove a listener. All listener methods are optional. The default class that is generated will include all available methods, but they do not have to be present in your file. All listener methods are return type void. If a listener method fails, an exception will be thrown when IN_DEV is enabled. In production, the exception will be logged with a reference to the listener class and the event on which the exception occurred. Firing Events Your code can fire any existing event using the Event::fire method. Example: Event::fire( 'onBeforeCreateOrEdit', $comment, array( $values ) ); The Event::fire method is called statically and accepts an event name, the object on which the event will be fired, and an array of additional parameters (varies according to the event that you are triggering). This concludes our introduction to Listeners. We do intend to implement additional listener types and events based on your feedback and as the need arises. Wyświetl pełną treść wpisu
  18. When planning Invision Community 5, we knew we had a unique opportunity to hit the reset button. It's hard to believe, but how we work with the framework has been the same since 2013. The priorities we held a decade ago no longer align with our current vision. The landscape of modern frameworks has evolved, and we have adapted accordingly. When we initially designed the Invision Community 4 framework all those years ago, our goal was to create an open development platform. We aimed to empower you with the ability to extend virtually every function we built, granting complete freedom to shape our UI, workflows, and functionality according to your needs. However, over the decade, we have realised that this freedom has inadvertently become a prison. While monkey patching allowed the overloading of any method we had written, it came at a significant cost. Even the slightest change to our original method signatures could break an entire community, forcing you to update your applications. Ironically, the more we strived to enhance our framework, the less stable your applications became. We dismissed requests for proper workflows like extensions, webhooks, and event listeners, urging you to rely solely on method overloading, often having to copy chunks of code just to add a few lines of your own. Invision Community 5 represents a much-needed reset. It is a moment to reassess everything we know about extending frameworks and construct definitive pathways and workflows that serve you better. Our aim is for you to continue crafting exceptional applications that bring fresh functionality to the Invision Community while protecting the integrity of our core functionality. Change can be intimidating, but let us embrace this opportunity to bid farewell to outdated and fragile tools and pave the way for a collaborative future with precision-designed resources instead. In the coming weeks, we will delve deeply into the new development tools offered by Invision Community 5, but today, I wanted to give you a brief overview of what's to come for code development. We will do a near-future entry on creating themes with Invision Community 5. Out with the old Monkey patching via code hooks was the primary way to add functionality to Invision Community. However, it meant that we could not update our code base without risking breaking many popular applications, a situation that will only get worse as PHP starts to lock down type hinting and casting. Furthermore, IDEs have a tough time working out relationships between classes requiring special tools to create alias files to allow full use of many advanced tools of PHPStorm and other editors. Finally, monkey patching relied on heavy use of eval() which is not a very efficient PHP method. Monkey patching has been removed in Invision Community 5. Your IDE with Invision Community 4. Your IDE with Invision Community 5. Template hooks, as you know them, have also been removed. I only mention this now as they often go hand-in-hand with code hooks to add items to menus, data-attributes to blocks and CSS classes to many areas. We will do a more thorough blog on theme editing soon, but we still retain a way to hook into key areas. In with the new We will write a series of developer blogs to look in more detail at the new systems, but here is a quick overview of the new tools and a brief description of what they are capable of. Content Menus We have removed much of the menu logic for content items and comments from templates and created a simple, extensible way to add links to commonly used menus, such as the item moderation menu and the per-post 'three dots' menu. You no longer need a template hook to perform such a basic task. UIExtension This framework provides you with an easy way to add CSS, data-attributes and even templated HTML into specific areas within nodes and content items/comments. A common reason to create template hooks was to tweak the CSS classes or add data-attributes for client-side scripting. In the same way that we've stripped menus out of templates, we've removed the content item badges (pinned, hidden, etc.) and into the UIExtension making it easy to add your own badges to this area without the need for template or code hooks. Finally, UIExtension can add form fields into Invision Community content forms. Event Listeners The easiest way to describe this is like MemberSync but for content (items and comments), members, Commerce invoices and Commerce packages. Do you need to run your code each time a forum post is made? Not a problem. Do you need to run your code when a topic is locked? Perhaps when an item is viewed? All this and more is possible via the new listeners. The advantage is that you don't need to copy chunks of our code when overloading a single method in a hook. You write your clean code in an object-specific listener. What else? We have also undertaken a long overdue code clean-up. Every single file has been updated to update return types and function signature types and to use aliases instead of fully qualified names (for example, new Url() instead of new \IPS\Http\Url()). Many methods have been removed from the Content classes and moved into traits. Likewise, many interfaces are now traits to reuse code properly, reducing the behemoth-sized classes. Elsewhere, all the search indexing logic that was entwined in content and node classes has now been moved to the extension system, further reducing the noise and volume of key classes. A Quick Recap Generic broad reaching tools such as monkey patching and template overloading have been removed. New precision tools with a specific use-case have been created. There are less opportunities to overwrite and change our UI and functionality but easier ways to extend and create new functionality. The future We have worked hard on these development tools to ensure that most of what you do now can be achieved in Invision Community 5. We have had input from various stakeholders, including those who regularly create modifications for Invision Community to ensure our new tools are fit for purpose. Through the alpha and beta testing phase, we want your feedback, and we will listen to your suggestions. We cannot promise that you can do everything with Invision Community 5 that you currently do, which is intentional, but we are confident that you can still hit all the major beats. We want to protect our UI and functionality a little more but encourage you to build amazing new functionality to work alongside Invision Community 5. Together, we will shape the next era of Invision Community. Wyświetl pełną treść wpisu
  19. ☀️ Welcome to this week's Invision Community Insight! ☀️ Thank you for checking out this quick, round up post. I hope you have had a lovely week. This week's updates from the Invision Community team are below. 🙂 Current Happenings New Version Our July maintenance release is available. Review the release notes to see what is included in the July release, version 4.7.12. https://invisioncommunity.com/release-notes/ On Deck Release Chat Our July release chat will be happening this coming Wednesday. Join us live if you can or catch the video and discussion in the converted topic after the event. Changelog Finally, for those that like to see what we are up to line by line, here is the changelog for the week for version 4. Changes are limited for now as we focus attention on version 5. We are nearing the time for announcements and soon an alpha/beta for version 5. Stay tuned! 🎉 Wyświetl pełną treść wpisu
  20. Description: This app will give your members the option to reverse block their ignored members by preventing them to view their profiles and topics. The topics will be hidden from the search and recent activity pages as well. Settings: Members with the appropriate permissions set by the admin can enable the profile and/or topics viewing for their ignored members from their settings page. Members History Logs: The reverse blocking of ignored members will be logged in members history log page. Compatibility: The app is compatible with the latest version of Ipb and php 8. Wyświetl pełną treść wpisu
  21. ☀️ Welcome to this week's Invision Community Insight! ☀️ Thank you for checking out this weekly update. I hope you have had a lovely, productive week. This week's updates from the Invision Community team are below. 🙂 Current Happenings New Version Our latest July beta is ready! Upgrade to the official July release next week. As with all beta releases, upgrading your community is at your own risk. Please make sure you backup before upgrading! Here is what is slated for the July release, version 4.7.12. https://invisioncommunity.com/release-notes/ On Deck Release Chat Our July release chat will be happening at the end of the month. Join us live if you can or catch the video and discussion in the converted topic after the event. Finally, for those that like to see what we are up to line by line, here is the changelog for the week for version 4. Changes are limited for now as we focus attention on version 5. More information will be shared about version 5 at a future date. Changelog Wyświetl pełną treść wpisu
  22. Invite Codes for Invision Community allows administrators to generate unique invite codes. These codes can be entered during registration or later on a separate page. Once entered, the member will be automatically added to specific member groups and/or clubs. Codes can also be associated with specific email addresses so that only this person can use the code. But that's not all! We also offer an exciting feature where an alert is generated for users after their first visit following code usage. This alert serves as a warm welcome and provides essential information or updates. This is a great way to semi-automatically fill existing clubs or have applicants register on your community automatically gaining access to specific forums and clubs which are only relevant to them. Wyświetl pełną treść wpisu
  23. Description: This app will give your members more control in regard as to who can view/read their topics. Privacy Settings: Members can decide if everyone can view/read their topics, or only their followers , or no one but the staff members who belong to groups with the appropriate permissions set by the admin. By default it is set to everyone. Members History Logs: Admins can view how members set their topics privacy from members history logs. Logs: Admins can view all members topics privacy settings from the app's log page. There they can edit members topics privacy settings as well as reset all topics privacy settings to Everyone. Filtering: Admins can filter each topics privacy setting to see the members who selected them. Search: From the log page admins can also search for a member 's topics privacy settings. Compatibility: The app is compatible with the latest version of Ipb and php 8. Wyświetl pełną treść wpisu
  24. This application will create a new page which shows all pending members from all clubs the currently logged in member is a moderator of. Wyświetl pełną treść wpisu
  25. This application will block any previously used member names from deleted users to be used for new registrations. Attention, this affects only usernames from members which are deleted AFTER this application is installed Wyświetl pełną treść wpisu
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.