Skip to content
View in the app

A better way to browse. Learn more.

JimiWikman.se

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Ikea introduce Buy Back Friday - will buy back and resell your Ikea items

By 💫 Jimi Wikman ·
Ikea is making a bit of a splash recently with them announcing that they will not do the regular Black Friday sales and instead will buy back and resell products from their customers. This initiative called Buy Back Friday will happen in 27 of 31 markets globally between November 23rd to November 29th.
When the rest of the world get ready for the biggest marketing campaign of the year, Ikea chooses to focus on a little different approach. The Buy Back Friday will focus on sustainability and not only will it reduce the number of things that are thrown away, it will also allow people to get some furniture at a pretty low cost. The fact that you get store credit for the things you turn is also a great way to give people a bit extra before Christmas.
Personally I think this is a great example on how you can have great marketing while also making a good impact on the world. Ikea get two thumbs up from me.
 
  • 0
  • 1622

Figma's selling points - just for isolated design teams?

By 💫 Jimi Wikman ·
Figma has been in the news for designers for a while and it is in many ways praised as the one tool that will save us all. I am still skeptical because to me Figma is a generalist tool, and I am used to working with specialist tools. I will go over the selling points that Figma have listed as to why people make the switch from Sketch to Figma.
On the Figma website they list 3 main selling points for making the switch: Less is more, Faster in the cloud and Better Teamwork. The collaboration aspect has been their biggest selling point so far as far as I am concerned, but let us go over them one by one and see how they appeal to certain groups.
I will look at these selling points from two points of view. The Isolated design team, which would be where most design studios and larger companies with dedicated design teams would fit. The included design team which is where the team is working alongside the requirements and development team members.
 
Less is more
I could not agree more. Having to juggle multiple tools at once is a bad experience for everyone. The design tool is just one tool and it must connect to the overall flow of the build phases. That means that the design should be connected to the code and the requirements. As far as I know there is no design tool that have that today, so we still need to have that as separate tools.
Abstract for release management
When it comes to both requirements and development, which are the two adjacent disciplines to design, then version management is very important. Abstract is by far the best tool right now for maintaining a controlled version management, which also can follow the same flow as the code. This allows for locking a design, while also continue working on it in a controlled way.
While Figma have a version history built in, it is just that. Version management of single assets with no connection outside the design flow. It is not what is needed for collaboration outside the design discipline, even if it is nice to see who did what when.
InVision for prototyping
I do not do a lot of prototyping and usually the built-in functions in Sketch works fine to illustrate a flow. If I need to do a full prototype I would either use InVision or Axure depending on the situation. Are the functions in Figma as advanced as InVision or Axure? I don't think so, but then again I have not seen any reason to dig into it too much. I doubt it is something that will make or break a decision for a designer.
Zeplin / Avocode for design handover
While design handovers are less common when working with proper pattern libraries, a lot of people still do not have that workflow in their organization. Having tools like Zeplin or Avocode to allow developers to match colors, fonts, margins and paddings becomes important in that case.
For the isolated design teams this is a lifesaver as it reduce the need to communicate with the build team. For the included teams it is simply an additional feature, like a nice-to-have. This is because the included teams will of course collaborate directly with the rest of the team, which makes static information less important.
Overall it is not bad that Figma have the basic tools for prototyping and design handover, quite the opposite. The missing part for me is that they do not have the features to replace Abstract and the features for prototyping and design handover are not exceeding the features of the specialized tools.
I would argue that Figma would best fit small, isolated teams that need a generalist tool over specialized ones or due to cost.
 
Faster in the cloud
One selling point for Figma is that it works everywhere. This is good news if you are forced to work in an organization that only allow PC computers or if you prefer to work on a Linux for whatever reason. Personally I fail to see the importance of this because you should choose the tools that make you most efficient. If you are limited because the organization prioritize hardware over people, then leave right away. Never work for companies that don't care about its people.
The only reason why this is good for Figma is because they want to bring everyone into Figma and as such it must be available on all systems. It does not make the design process more efficient and collaboration of multiple disciplines inside a design tool is far from problem free.
I would say this is only needed if you have the design handover in the design tool or if your workflow is based on passive collaboration.
 
Better Teamwork
This is Figma's biggest selling point in my opinion and it is one they promote a lot. Collaboration is an interesting thing though and it clearly means different things to different people. Figma define collaboration as getting passive feedback through comments and the ability to work on the same designs together.
Comments are passive collaboration
The ability to add comments is the very lowest form of collaboration. It is a passive form of communication and while it is nice to not having to email people to get a comment on a design suggestion, it is best suited for isolated teams that do not have access to the people that they need to communicate with.
For included teams this might at best be something you use when you are not working or to get feedback from people that are not part of the build stream that you are working in. Included teams would get far better results directly communicating with developers and stakeholders than asking for comments.
Adding Notes to your design
While it is sometimes useful to add notes in the design, for example during a workshop, I do not see this as a big selling point as I could just as easily get something like Sketch Notebook to do the same thing.
So while we all want better collaboration, I fail to see how passive communication with external sources will be helpful in most situations. Unless you are an isolated team with little to no access to the people you need to collaborate with. Figma has the same type of collaboration like many other tools that also cater to the same working conditions where you work apart from the people you need to collaborate with.
Is this something that is crucial for a modern designer today? In some cases it might be, but for people who work in an agile and included way this would never be an important feature. It should also be noted that Sketch are also adding these type of features in a near future and if they are similar, then this would not be a big selling point in the future.
 
Design System (not listed as a selling point)
Figma also promote their design system as an important feature, but not as a reason why people move from Sketch to Figma. I bring it up because design systems are used a bit carelessly these days and sometimes seem to be interchangeable with pattern libraries.
In both Sketch and Figma a design system is just design asset management. It is not connected to code in any way, other than that certain values can be seen using the inspect tools in Figma. You would need something like Invision DSM to actually connect code to assets, but usually you will still have a manual step between design and code.
 
Should you make the switch?
This is the big question, just like it was some years ago when Sketch challenged Adobe. Back then it depended on your workflow and your finances mostly, but also what UI you preferred. To some it was also about small company vs big company or just to have the latest hot tool on the market. Here are some the reasons I see.
Figma is the latest hot tool
There is no denying this fact ever since WordPress announced they would go for Figma as the official tool back in 2018. It is now the talk of the town and many are looking at Figma to replace Sketch. If you are one of those that follow the crowd, then Figma is probably pretty attractive right now for this reason alone.
Many designers still work in isolation
Sadly this is still true, even if designers are slowly moving into the build teams. When you are cut off from the daily interactions of the build teams, then you have no choice but to work with passive communication. Having that inside your design tool is a good option if you are crippled when it comes to good communication. Sketch will get similar features so this may not be the selling point it once was.
One cheaper general tool
Money always define the tools we use and the possibility to reduce cost by using one general tool rather that several specialist tools is not a bad thing. If you rarely use the full features on the specialist tools, or if you are struggling with the cost for multiple tools, then Figma is not a bad alternative. It probably has most of the feature you use every day already built in.
Everyone can use Figma
This is something that should not be underestimated. Many companies suffer from low trust and as such managers have the need to control the work even if they should not. In such situations it is very nice to have a tool that is accessible everywhere and the commenting function is also a big bonus.
 
The only drawbacks with Figma as I see it, is that it is an isolated design tool and it is not an offline tool. It has no connection to the build flow and it really needs Abstract as a plugin or a similar product that also have design release flows. The fact that it require Internet also put some limits on where I can or can not work. There are of course plugins to both Figma and Sketch that require Internet connection as well, so the limitations are not only in Figma.
My conclusion when it comes to Figma is that for me there is nothing that make me want to make the switch. The tools are roughly the same and when I need it I will bring in another tool to supplement for example prototyping. It does not fit into my workflow of direct communication where design follows the same cadence as development and test. At least not for the moment.
For isolated design teams, or smaller design teams that do not need additional features I would say this is a great fit due to it's acessibility, indirect collaboration features and price.
For included design teams I would still suggest Sketch + Abstract as the most efficient and collaborative way of working.

Color Variables & Components view - Sketch 69 make life easier for you

By 💫 Jimi Wikman ·
After some time in beta Sketch 69 was released yesterday and it was a great release indeed. We finally got Color variables, which has been much requested. We also got the first taste of the components view which is a more structured way to manage all your assets. Finally we got a new insert window to make adding your assets into a design so very much easier and intuitive.
Color variable
This is amazing and I like this a lot, espcially combined with the Components view. For people who find it annoying or time consuming to turn your old layers and styles manually, there is a migration tool that you can use. It is called the Color Variables Migrator and it is of curse free to use.
Components view
This, to me, makes working with assets a whole lot easier. I find that this in combination with the new insert window below make it faster and much more intuitive to work with assets now.
Insert Window
This makes working with assets a pure pleasure. No more droplists to go through with barely visible icons. Instead we get a big, well organised window that you open when you need it pressing "C" where your assets are easy to find and you add them with drag and drop. I love it.
 
This is one of the best updates this year to Sketch as I see it and I look forward to hearing more on the collaboration features they are working on next.

Why Service Design is confusing and therefore very hard to sell

By 💫 Jimi Wikman ·
If you work as a Service Designer or as someone who try to sell Service Design assignments, then you probably have noticed that it is not so easy. You probably have met your fair share of people that have no idea what you are talking about. Maybe you have written that off because the job title is still fairly new, but that is not always the case.
Service Design from a UX perspective is still fairly confusing and poorly defined. It's a problem that you hear many definitions of what a UX Service Designer actually do, but there are other problems as well. Let us first look at how UX Service Design is defined.
This is a fairly fluffy definition of what the UX Service Designer do and as with so much of the design discipline it have no real process, but rather some blocks of activities that are loosely defined. It is no wonder why it is so hard to understand what the UX Service Designer will actually do and how it is different from the regular UX Designer.
As UX Service Designers is supposed to work on a higher level than a UX Designer, you also face the issue that many of the executives and managers you meet comes from a background in ITIL. That means that many you will talk to probably have a certification in ITIL Service Design. Now you will face not just the problem to define exactly what you do and will deliver, but you also need to explain why they would hire you when they have a certification in that same discipline.
The ITIL Service Design is a bit different because as UX Service Design focus on the user experience, ITIL Service Design focus on different things and have a different definition of Service than the standard IT definition.
This is why when you step into a room filled with experience executives and managers and proclaim that you are a Service Designer, that might not generate the mental image of a UX Service Designer, but that of an ITIL Service Designer. This is not a very good starting position, especially when you talk about user experience and they might wonder how that is relevant to resource management or fund allocations.
My suggestion is therefore to always refer to your profession as a UX Service Designer rather than just Service Designer. It will make sure you at least will not be confused with an ITIL Service Designer.

Making up combined roles - it is rarely a good idea

By 💫 Jimi Wikman ·
Scrum Manager. Developing Architect. Fullstack Developer/Designer. The new roles are popping up left and right these days. Some are clearly just another way to say "generalist", but others are roles that have a very high chance of making people sick. Why do we see these ads? I think it is because the people writing them do not know the craft.
For me, who actually is a generalist with pretty decent competence in multiple fields, I find these ads very amusing. Rather than writing that they need multiple roles filled, but only have budget for one, they make up new roles. Presumably in the hopes of getting someone who can do most of what they think they need.
Because this is the thing, most people that write these ads don't really know what they need. I have seen ads that sound like someone making a frankensteins monster out of the roles. Clearly with little to no understanding of what the different roles actually mean. Some ads just try to mix the best of two worlds, like the Scrum Manager that combines the caring/facilitating aspect of the Scrum Master with the managing/controling role of the Project Manager.
From the person who write the ad it probably makes sense and that is because they do not understand the work involved. From their perspective they probably see a scrum master and a project manager as both having management descriptions, so it should be ok to mix. The fact that they work in different directions where the scrum master work down towards the team and the project manager work up towards the steering group does not seem to occur to them.
In most cases this is not so much of an issue because what you will get in most cases is a generalist. A Scrum Manager for example will be a general manager with some understanding of the scrum process and some understanding of the financial side of project management. The person will not be optimized for any of the roles, but will get things done. Sometimes at the expense of either the project or the team. Or both.
The biggest risk with making these combined roles is that unless you really know that you are compromising the roles you can cause serious damage. Not just to the deliveries and the teams as they do not get the attention they need, but also to the individual you are trying to hire. It is very easy to burn someone out with a combined role, especially if the expectations if that you should do both roles at 100%. The very least you must always do when defining combined roles is to define the ratio. How much time should be spent where and why.
For anyone looking to fill a combined role, here are some examples and some sugegstions on how to approach them:
Scrum Manager - Focus on the Scrum Master part. By making the team working well you will get most of the work as a project manager for free. Deliver reports to the steering with focus on risk mitigation and finance. Progress will come of itself if you focus on the Scrum Master part correctly. If put in a compromised position, always protect the team. It will serve you best in the long run. This is a sure way to burn yourself out if you try to do both at 100%, so be weary of the signs and make sure you get plenty of time to actually work and not just sit in meetings.
  Full stack x - Most designers or developers are full stack, kind of. We do take an interest in what is around us and we dabble in the surrounding fields naturally. So just make sure you are not expected to actually be responsible for anything you are not comfortable with and you will be fine.
  Developing Architect/Scrum Master - This is one of the most devestating roles you can have. As an architect or Scrum Master you will be in meetings constantly, whch means that any attempts to actually develop anything will be a massive source of frustration. If you will attempt this, dedicate blocks of time to development that can not be disturbed. Preferably you work from home or in a separate room with phone, mail and other distractions turned off. Minimum of 4 hours blocks, but I suggest full days for focused work. Avoid this if possible or accept that the amount of developing you will do is most likely next to nothing or will happen during weekends and night time.
  Scrum Master and QA - While most Scrum Master will assist in QA by doing tests or gathering requirements, that is not their actual job. Being a tester or a reuirements analyst is a full time job, just like being a scrum master. If you are going to split your attention between the two, make sure you understand the cost both to you and your team. You will not be doing any 40 hour weeks, but rather do 60 hour weeks to make this work and the stress will be intense. Be mindful of combined roles as they can spiral and become very stressful. What may look like an opportunity to show your skills, especially if you are new in the role(s) can put you on the bech for years if you are unlucky.
If you are looking for people to join your team, always look towards who need that role. Is it for management taking care of the need of the people above, then hire a manager. If the person is taking care of the team, then hire a scrum master. If you need someone to do focused develop, hire a developer. If you need someone to take responsibility for the code structure, hire an architect, or elevate a development lead. And so on...
Combined roles have always been a part of working in IT. As long as you know what you are expected to do and know you can handle it even when things get rough, then ignore the title and do the job. Also be careful about dividing your work because that also can cause serious health issues.
 
Above I have some of the combined roles I see a lot.
What roles do you see and how do you handle them?
  • 0
  • 1593

Global Internet Outage affects games and services all around the world

By 💫 Jimi Wikman ·
A global Internet Outage that is affecting thousands of services is currently in effect. It seems that the origin is Level3 / Centurylink which affects not just games, but also internet traffic and even phone services. It is safe to say that people are not happy at the moment.
It seems that this started just before lunch swedish time and reports of network issues started flood in right after that. Popular games suddenly had server issues and the list of affected services on Downdetector grew fast. Centurylink seem to have some serious issues right now as they seem to have somehow manage to break IPv4 and IPv6 making traffic loop without finding their intended destination.

Besides breaking a large portion of services it also seem that their ISP part is also down, causing a lot of people loose their Internet connection. This also affect IP based phone services of course, which could be a big problem.
Based on reports from different sources, such as the Cloud Helix status page it seems that CenturyLink have identified multiple Border Gateway Protocol (BGP) issues causing service impacts across multiple markets. This would explain the IPv4 and IPv6 issues and it is not a total surprise that the now 26 year old protocol would be the cause.
We are still waiting fo the official word from CenturyLink that has remained dead silent about the situation. That is never a good sign, even if it is a sunday and the world in general is a bit crazy.
We hope for a quick resolution and hope everyone affected remain safe and calm.
  • 0
  • 1755

How to add tabbed blocks in Invision Community Pages

By 💫 Jimi Wikman ·
Adding content using tabs in Invision Community Pages is one of the most common questions I get about this website. It is something that is really not that complicated, but it is a bit tricky to find the information. In this article I will show you how I created my tabbed blocks so you can use it on your own page.
While you can add this directly into a template if you want, I prefer to build this using blocks. This way I can control the content in more detail and it makes my life easier since I have different blocks for each content. So I first start with creating a block that will hold the tabs themselves. In this block I will reference in other blocks to display the content for each tabbed content.
To create a new block you go to Pages -> Page Management -> Blocks. There we create a custom block with manual HTML as the content editor.

Give the block a name and a template key. I also have organized my templates so that my Tabs are in a separate category, which help making things a little easier to find when you have a lot of blocks like I do.

In the content section you can now add the HTML and template logic to create the tabs section.  The information on how tabs work can be found in the documentation here: https://invisioncommunity.com/4guides/themes-and-customizations/javascript-framework/using-ui-widgets/ipsuitabbar-r66/
 
<div class="ipsTabs ipsTabs_contained ipsTabs_withIcons ipsTabs_large ipsTabs_stretch ipsClearfix" id="elTabBar" data-ipstabbar="" data-ipstabbar-defaulttab="1" data-ipstabbar-contentarea="#" data-ipstabbar-updateurl="false"> <a href="" data-action="expandTabs"><i class="fa fa-caret-down"></i></a> <ul role="tablist"> <li> <a href="" role="tab" id="1" class="ipsType_center ipsTabs_item ipsTabs_activeItem" aria-selected="true"> <i class="far fa-newspaper"></i> Management Articles </a> </li> <li> <a href="" role="tab" id="2" class="ipsType_center ipsTabs_item"> <i class="fas fa-comment-alt"></i> Management Discussions </a> </li> <li> <a href="" role="tab" id="3" class="ipsType_center ipsTabs_item"> <i class="fas fa-id-card"></i>Management People </a> </li> <li> <a href="" role="tab" id="4" class="ipsType_center ipsTabs_item"> <i class="fas fa-cloud-download-alt"></i>Management Downloads </a> </li> <li> <a href="" role="tab" id="5" class="ipsType_center ipsTabs_item"> <i class="fas fa-play-circle"></i>Management Videos </a> </li> <li> <a href="" role="tab" id="6" class="ipsType_center ipsTabs_item"> <i class="fas fa-link"></i>Management Links </a> </li> </ul> </div> <section class="ipsTabs_panels ipsTabs_contained"> <div id="ipsTabs_elTabBar_1_panel" class='ipsTabs_panel'> {block="latest_management_articles"} <a href="https://jimiwikman.se/blog-articles/blog/professional/management/">Read All Articles</a> </div> <div id="ipsTabs_elTabBar_2_panel" class='ipsTabs_panel'> {block="management_forum_topics"} </div> <div id="ipsTabs_elTabBar_3_panel" class='ipsTabs_panel'> {block="awesome_management"} </div> <div id="ipsTabs_elTabBar_4_panel" class='ipsTabs_panel'> {block="latest_management_downloads"} </div> <div id="ipsTabs_elTabBar_5_panel" class='ipsTabs_panel'> {block="latest_management_videos"} </div> <div id="ipsTabs_elTabBar_6_panel" class='ipsTabs_panel'> {block="latest_management_links"} </div> </section> In this code we have the top section defining the tabs themselves. Each tab has an ID that we use in the bottom section to determine what content we show in each tab. This is done in the bottom section by adding the ID to the div ID "ipsTabs_elTabBar_HERE_panel". So for example we can add the ID of 1 to show the content for the first tab by adding the number 1 to that ID: "ipsTabs_elTabBar_1_panel".
What I have done for my setup is to add blocks rather than content directly into the bottom section. For me that make things easier to manage, but you can add it directly to your block if you prefer that. In my code here I am using FontAwesome to create the icons for the tabs. You can just take those out if you prefer not to have icons in your tabs.
Once this has been done, then you have a block that you can add to any page, just like other blocks. You can see this example live here: https://jimiwikman.se/management/

I hope this is helpful and if you have any questions on how this works or how to modify it, feel free to add a comment. I will do my best to answer as always. If you have other questions on Invision Community, please use the discussion forum.
  • 0
  • 1919

Atlassian acquire Mindville - asset and configuration management from Sweden

By 💫 Jimi Wikman ·
Atlassian and Mindville announced on thursday that Atlassian has acquired Mindville.  This means that Atlassian acquire Mindville's asset and configuration management product Insight, which strengthen their psoition against competitors like ServiceNow.
The CEO of Mindville Tommy Nordahl is well known to us in Stockholm who have participated in the Atlassian Usergroup events that I ran for two years. For many he is Riada, the company he started many years ago as the Atlassian company number one in Stockholm (and sweden?). Lately he has focused more on the asset and configuration managament product Insight and I am not surprised that Atlassian now have aquired it.
Atlassian and ServiceNow are both gearing up for a battle. Since ServiceNow are strong in the asset and configuration management it makes sense that Atlassian want to stregthen their portfolio in their area.  With more than 1700 customers already and Atlassian now adding resources I think we will see the cloud adaptation speed up a lot.
If you have not looked at Insight before, then I suggest you do. Not only is it looking great and is easy to work with, it is also powerful and a very useful addition to your support organization. Using Insight alongside Jira Service Desk and Confluence is probably the most powerful way to manage incidents in your organization. The fact that you can directly connect it to your development and opertions team who already work in Jira make it even more powerful.
 
 
I just want to say congratulation to Tommy and his amazing team for this accomplishment. To Atlassian I can only say good job on this acquisition. It will take you another step closer to being the natural choice for mid sized and large organizations, just as you already are the natural choice for small companies and all development teams today.

Vulnerabilities in SAP Products Could compromise systems and it's data

By 💫 Jimi Wikman ·
Multiple vulnerabilities have been reported in SAP products where things like cross-site scripting (xss) and server side request forgery open up access points through which a hacker can compromise the systems and it's data. These vulnerabilities have been patched in SAP Security Patch Day – July 2020 and it is strongly advised to make that update as soon as possible.
SYSTEMS AFFECTED:
Multiple Vulnerabilities in SAP NetWeaver AS JAVA (LM Configuration Wizard) (CVE-2020-6286). Security updates for the browser control Google Chromium delivered with SAP Business Client Information Disclosure in SAP NetWeaver (XMLToolkit for Java) (CVE-2020-6285). Multiple vulnerabilities in SAP Disclosure Management (CVE-2020-6267). Cross-Site Scripting (XSS) vulnerability in SAP Business Objects Business Intelligence Platform(BI Launch pad) (CVE-2020-6281). Cross-Site Scripting (XSS) vulnerability in SAP Business Objects Business Intelligence Platform(Bipodata) (CVE-2020-6276). Server-Side Request Forgery in SAP NetWeaver AS JAVA (IIOP service) (CVE-2020-6282). Cross-Site Scripting (XSS) vulnerability in SAP Business Objects Business Intelligence Platform (BI Launchpad and CMC) (CVE-2020-6278). Cross-Site Scripting (XSS) vulnerability in SAP BusinessObjects Business Intelligence Platform (Web Intelligence HTML interface) (CVE-2020-6222). Information Disclosure in SAP NetWeaver (ABAP Server) and ABAP Platform (CVE-2020-6280).

Critical Wordpress plugin bug compromise hosting accounts for thousands of users

By 💫 Jimi Wikman ·
A critical bug in the popular Wordpress plugin wpDiscuz allow users to upload and execute code remotely. This is because of a bug in the file mime type detection that allowed any file type to be uploaded. This open up the server to remote code execution (RCE) that could result in the entire server being compromised. 
The vulnerability was reported to wpDiscuz's developers by Wordfence's Threat Intelligence team on June 19 and was fully patched with the release of version 7.0.5 on July 23. Since then 25.000 users have downloaded this update, leaving at least 45.000 sites still vulnerable from this bug.
According to Wordfence threat analyst Chloe Chamberland, the security flaw is rated as critical severity with a CVSS base score of 10/10.
Disclosure Timeline
June 18, 2020 – Initial discovery of vulnerability. We verify the Wordfence firewall provides protection against exploit attempts and we make our initial contact attempt with the plugin’s team.
June 19, 2020 – Plugin team confirms inbox for handling disclosure. We send full disclosure details.
June 20, 2020 – The plugin’s team let us know that a patch will be released in version 7.0.4.
July 6, 2020 – Follow-up as no patch has been released.
July 10, 2020 – They respond to let us know a patch is coming in 1-2 days.
July 13, 2020 – Follow-up as no patch has been released.
July 15, 2020 – They respond saying a patch will be released by the end of week.
July 20, 2020 – A patch has been released. We check the patch and see that vulnerability is still exploitable and inform them.
July 23, 2020 – A sufficient patch has been released in version 7.0.5
 
If you are using wpDiscuz you should upgrade emediately to avoid having your server compromised.

How to add database relationsship with design in invision community

By 💫 Jimi Wikman ·
Database relations in Pages is a very powerful way to bring content from different databases into entries of ther databases. In this example I will show you how I added the People in project area in My Projects.

Creating the Database
I started by creating a new database called "People Profiles". It will be a database just to hold the data as it will not be publicly presented anywhere outside of the My Projects area. just to make it easier to work with I created a page and added the database to it. I also made the page available only to me so I can use it, but it will not be visible to anyone else.
Then I decided on the fields that I wanted to use. I want to use an image, so I activated the record image. Then I went through the data I wanted to add:
Name Title Awesome URL Linkedin URL Instagram URL Twitter URL Homepage URL Working area These are the basic fields. I realized thad I will probably have multiple versions of the profiles depending on when in time I worked with them. To search for the correct profile I would need more information, so I also added a Long Title that i se as the title field. I also added a Notes field to act as the Content field in case I wanted to scribble something down for myself.

 
Setting up a Database Relationship
After I added a few profiles it was time to bring them from the People Profiles database into the My Projects database. The first step was to add a new field into the My Projects database of the type "Database Relationship". When creating that I have to choose what database I want to create the relationship to, so I selected People Profiles. In the settings for display options I set a template key so I can reference it later and I unchecked the show in listing template and show in display tempate.

 
Adding the database relationship in the template
As I have selected not to display anything in the listing or display templates nothing will happen yet. So new we have to add this to our template for My Projects so we can show the data where we want it. So we head over to Templates in Pages where I have created my own template set for My Projects.
 

 
Adding custom fields are done by adding a code line. There are some variations on this, but I will not into it in this post. This is the code:
{$record->customFieldDisplayByKey('your custom field key', 'display')|raw} As you only want to show this field if it is actually not blank, then we wrap that in a condition to only show if it is not blank:
 
{{if $record->customFieldDisplayByKey('your custom field key')}} {$record->customFieldDisplayByKey('your custom field key', 'display')|raw} {{endif}} In my case I also wanted to add some styling and a header. So my code looks like this:
 
<!- People in Footer --> {{if $record->customFieldDisplayByKey('project_people')}} <div class="project_people_footer"> <h3>People in the Project</h3> <div class='ipsGrid ipsGrid_collapseTablet'> {$record->customFieldDisplayByKey('project_people', 'display')|raw} </div> </div> {{endif}}  
Defining the output in basicRelationship
Now that we have included the data from the People Profiles database you will see that it is just a link. We want to have more data than that so now we must define what data we want to pull from that database and how we want that to be displayed. We have to do that be editing a theme file called basicRelationship. So we head over to our Theme folder and click the "Edit HTML and CSS" icon to get into the templates. Then under CMS->Global you will find the basicRelationship file.
 

 
This file is a bit tricky because it defines all database relations. In order for us to target specifically the data coming from People Profiles we need to figure out what ID that database has. We can do that from Pages under Content->Databases which will list all database. If you hover over the edit button over your selected database, then you can see the URL at the bottom of your screen with the ID of the database at the very end.
 

 
With the ID defined we can add a bit of code to make sure we only target specific databases with our changes:
{{foreach $items as $id => $item}} {{if $item::$customDatabaseId == 19}} <!-- People database --> {template="BasicRelationship_PeopleProfiles" app="cms" group="basic_relationship_templates" params="$item"} {{elseif $item::$customDatabaseId == 16}} <!-- Author database --> {template="BasicRelationship_author" app="cms" group="basic_relationship_templates" params="$item"} {{else}} <!-- all other databases --> <a class="ipsPages_csv" href="{$item->url()}">{$item->_title}</a> {{endif}} {{endforeach}}  
Creating Theme Templates instead of just using basicRelationship
In this code I have added 2 databases (19 and 16) and then I have a fallback for all others at the end that will show the default link. While it is very possible to add the code directly into this template I have used a different approach and instead created separate templates outside and then referenced them in the basicRelationship. This way I can work on the content for each database in a more focused way and the basicRelationship becomes a bit easier to overlook.
In order to create a new template you go to Create New at the bottom of the template listings. Select HTML template and then fill out the form accordingly.
Name - the name of the template. Variables - We add $items here since that is what is defined in the foreach loop in basicRelations. Location - Here we select front to place the template in the correct section. Group - I suggest you create your own group here so it is easier for you to find later. Application - Here we select Pages
If you have done this as I have then you will have your new template located under CMS->Front->basic_relationship_templates. If you have selcted another group, then that is where you will find it instead.
 

 
Adding data to the theme template
Now that we have a template for our connection between the databases, then we can start adding the data to it that we want to show in My Projects. This is done in a very similar way as when we add the data to the entry templates. Instead of using $record however we use $item:
{{if $item->customFieldDisplayByKey('your custom field key')}} {$item->customFieldDisplayByKey('your custom field key', 'raw')} {{endif}} As I added the default record image that is called a bit differently:
{file="$item->_record_image_thumb" extension="cms_Records"} You can also reference the title field and the content field with a shorter tag:
{$item->_title} {$item->_content|raw} In my current code I have nested the fields a bit and I have used the field for working area pretty sloppy, but I think you get the general idea.
<div class='ipsGrid_span2 people-profiles_card'> <div class="people-profiles_image {{if $item->customFieldDisplayByKey('working-area')}}{$item->customFieldDisplayByKey('working-area', 'raw')}{{endif}}_image"> <img class="ipsImage {{if $item->customFieldDisplayByKey('working-area')}}{$item->customFieldDisplayByKey('working-area', 'raw')}{{endif}}" src="{file="$item->_record_image_thumb" extension="cms_Records"}" class=" {{if $item->customFieldDisplayByKey('working-area')}} {$item->customFieldDisplayByKey('working-area', 'raw')} {{endif}} " /> </div> <div class="people-profiles_Name"> {{if $item->customFieldDisplayByKey('people-profiles_Name')}} {$item->customFieldDisplayByKey('people-profiles_Name', 'raw')} {{endif}} </div> <div class="people-profiles_Title"> {{if $item->customFieldDisplayByKey('people-profiles_Title')}} <span class="{{if $item->customFieldDisplayByKey('working-area')}}{$item->customFieldDisplayByKey('working-area', 'raw')}{{endif}}">{$item->customFieldDisplayByKey('people-profiles_Title', 'raw')}</span> {{endif}} </div> <div class="people-profiles_links"> {{if $item->customFieldDisplayByKey('people-profiles_Awesome')}} <a href="{$item->customFieldDisplayByKey('people-profiles_Awesome', 'raw')}" class="people-profiles_Awesome"><i class="fas fa-id-card"></i></a> {{else}} <i class="fas fa-id-card"></i> {{endif}} {{if $item->customFieldDisplayByKey('people-profiles_Linkedin')}} <a href="{$item->customFieldDisplayByKey('people-profiles_Linkedin', 'raw')}" class="people-profiles_Linkedin"><i class="fab fa-linkedin"></i></a> {{else}} <i class="fab fa-linkedin"></i> {{endif}} {{if $item->customFieldDisplayByKey('people-profiles_Instagram')}} <a href="{$item->customFieldDisplayByKey('people-profiles_Instagram', 'raw')}" class="people-profiles_Instagram"><i class="fab fa-instagram-square"></i></a> {{else}} <i class="fab fa-instagram-square"></i> {{endif}} {{if $item->customFieldDisplayByKey('people-profiles_Twitter')}} <a href="{$item->customFieldDisplayByKey('people-profiles_Twitter', 'raw')}" class="people-profiles_Twitter"><i class="fab fa-twitter-square"></i></a> {{else}} <i class="fab fa-twitter-square"></i> {{endif}} {{if $item->customFieldDisplayByKey('people-profiles_Homepage')}} <a href="{$item->customFieldDisplayByKey('people-profiles_Homepage', 'raw')}" class="people-profiles_Homepage"><i class="fas fa-home"></i></a> {{else}} <i class="fas fa-home"></i> {{endif}} </div> </div>  
This guide should help you to bring in the data from any database into another database with the styling of your choice. I know this is a pretty short and not very detailed guide, but I hope it was useful anyway. Please add questions and I will improve upon the guide where I am jumping a bit to fast.
Happy coding!
  • 4
  • 2237

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.